Configurar LiveChat de Peertube en OBS
Categoría: Tutoriales
Tutoriales, guías y preguntas frecuentes sobre FTV
Incrustar vídeos de FediverseTV en WordPress u otras plataformas!
De la manera que incrustamamos/embebemos el vídeo es valido para otras plataformas webs.
Cómo transmitir desde OBS hacia FTV (y otras instancias de Peertube)
Agradecemos a @clementina este tutorial donde nos muestras como emitir desde OBS a FTV y otras instancias de Peertube
Como comentar en Peertube desde Pleroma/Mastodon/GNU Social
En el siguiente vídeo se puede ver como comentar en videos de Peertube sin necesitar una cuenta en la instancia de Peertube en cuestión, sinó que se puede hacer desde cualquier otra plataforma de microblogging del fediverso.
Como subir vídeos usando la api de peertube
Con el siguiente script se puede hacer:
#!/usr/bin/env python3 # Testeado contra peertube 4.x.x import time import json from pprint import pprint from mimetypes import guess_type import requests import click from requests.structures import CaseInsensitiveDict @click.group(no_args_is_help=True) def cli(): pass @cli.command("list-licenses") @click.option( "--host", "-h", default="https://fediverse.tv", help="Dirección del servidor de peertube", ) def list_licenses(host): try: api = host + "/api/v1" licenses = requests.get(api + "/videos/licences").json() pprint(licenses) except Exception as e: print("Ha ocurrido un error: {e}", e) @cli.command("list-languages") @click.option( "--host", "-h", default="https://fediverse.tv", help="Dirección del servidor de peertube", ) def list_languages(host): try: api = host + "/api/v1" licenses = requests.get(api + "/videos/languages").json() pprint(licenses) except Exception as e: print("Ha ocurrido un error: {e}", e) @cli.command("list-categories") @click.option( "--host", "-h", default="https://fediverse.tv", help="Dirección del servidor de peertube", ) def list_categories(host): try: api = host + "/api/v1" licenses = requests.get(api + "/videos/categories").json() pprint(licenses) except Exception as e: print("Ha ocurrido un error: {e}", e) @cli.command("list-privacy") @click.option( "--host", "-h", default="https://fediverse.tv", help="Dirección del servidor de peertube", ) def list_categories(host): try: api = host + "/api/v1" licenses = requests.get(api + "/videos/privacies").json() pprint(licenses) except Exception as e: print("Ha ocurrido un error: {e}", e) @cli.command("upload-video") @click.option( "--host", "-h", default="https://fediverse.tv", help="Dirección del servidor de peertube", ) @click.option("--username", "-u", help="Usuario para hacer login", required=True) @click.option("--password", "-p", help="Contraseña para hacer login", required=True) @click.option("--video-name", "-v", help="Nombre del vídeo", required=True) @click.option("--channel", "-c", help="Canal al que subir el vídeo", required=True) @click.option("--license-id", "-l", help="Licencia del vídeo") @click.option("--description", "-d", help="Descripción del vídeo") @click.option( "--nsfw", is_flag=True, default=False, help="Activar si es un vídeo sensible" ) @click.option("--tag", "-t", multiple=True, help="Tag a categorizar el vídeo") @click.option("--privacy-id", "-P", default=1, help="Tipo de privacidad del vídeo") @click.option("--language-id", "-L", help="Lenguaje del vídeo") @click.option("--video-path", "-V", help="Ruta del vídeo", required=True) @click.option("--category-id", "-C", help="Categoría del vídeo") def upload_video( host, username, password, video_name, channel, license_id, description, nsfw, tag, privacy_id, language_id, video_path, category_id, ): api = host + "/api/v1" try: # Conseguir el token de usuarie client_tokens = requests.get(api + "/oauth-clients/local").json() # Conseguir el token de acceso personal data = { "client_id": client_tokens["client_id"], "client_secret": client_tokens["client_secret"], "grant_type": "password", "response_type": "code", "username": username, "password": password, } access_token = requests.post(api + "/users/token", data=data).json()[ "access_token" ] # Definir el token de acceso personal para subir el vídeo headers = CaseInsensitiveDict() headers["Authorization"] = "Bearer " + access_token # Conseguir el ID del canal channel_id = requests.get(api + "/video-channels/" + channel).json()["id"] # Definir las características del video data = { "name": video_name, "channelId": channel_id, "category": category_id, "licence": license_id, "language": language_id, "description": description, "nsfw": nsfw, "tags": tag, "privacy": privacy_id, "waitTranscoding": True, "commentsEnabled": True, "downloadEnabled": True, } file_mime_type = guess_type(video_path)[0] with open(video_path, "rb") as f: upload_video = requests.post( api + "/videos/upload", data=data, headers=headers, files={"videofile": (data["name"], f, file_mime_type)}, ) pprint(upload_video.json()) except Exception as e: print("Ha ocurrido un error: {e}", e) if __name__ == "__main__": cli()
Para usarlo, hay que copiarlo en un directorio, crear un virtualenv y descargar sus dependencias:
Se pueden ver todos los parámetros que aceptan cada orden usando el parámetro help. Una cosa a tener en cuenta es que por defecto apunta a fediverse.tv, pero se puede cambiar con el parámetro –host.
El script, además de permitir subir vídeos, tiene utilidades para conseguir la información necesaria para poder modificar los parámetros del vídeo, como por ejemplo el lenguaje o la licencia. Se podría usar de la siguiente forma:
python uploadPeertubeVideo.py list-categories python uploadPeertubeVideo.py list-languages python uploadPeertubeVideo.py list-licenses python uploadPeertubeVideo.py list-privacy
Estas órdenes nos darán los IDs de cada sección y podremos usarlas al subir vídeo, aunque no son obligatorias, como se verá en el ejemplo. Para usarlas, consultar la ayuda:
Como añadir un marco a una grabacion en OBS
Video tutorial de como añadir un marco a una grabacion en OBS
Cómo comentar en directos desde una sala de Jabber / XMPP
TL;DR: Las salas XMPP se crean por defecto en un directo y tienen la dirección: {{nombre_del_canal}}@salas.xmpp.fediverse.tv. Solo hay que entrar cuando hay un directo desde cualquier cliente.