[WIP] Intégration PeerTube dans OBS Studio

Bonjour, je travaille depuis quelque temps sur une intégration de PeerTube dans OBS Studio.

Le Pull Request sur Github, notez que c’est un travail en cours.

Il n’est pas terminé. Tant que le label « Seeking testers » n’est pas en place, il n’est pas recommandé de testé mon PR.

Grâce à cette intégration vous pourrez vous connecter à votre instance (que vous devrez indiquer vous-même) puis :

  • Récupérer la clef d’un live déjà existant
  • Créer un live depuis OBS lui-même

Autre possibilité envisagé :

  • Supprimer la clef d’un live non-permanent une fois celui-ci terminé
  • Créer un live permanent puis le supprimer automatiquement pour l’auto-configurateur

Si vous avez des idées à proposer n’hésitez pas.

Pour le moment je n’ai codé que la partie connexion-déconnexion à une instance.

Note : L’équipe derrière OBS demande l’approbation des développeurs du service (ici PeerTube) pour les demandes d’ajout de service si ce dernier n’est pas fait par les développeurs eux-mêmes.

8 « J'aime »

Il semble que le fait que le PR soit fait par moi qui ne suis pas un membre de l’équipe de dev de PeerTube, va peut-être provoquer la fermeture/rejet de la fonctionalité.

Si c’est le cas et que je me sens capable, j’essaierai peut-être de faire terminer l’API pour les services de live d’OBS pour transformer mon travaille en plugin tiers.

1 « J'aime »

Bonjour @tytan652,

D’abord merci beaucoup pour ton travail sur OBS. Trop souvent des logiciels font des intégrations en liant service et domaine, et OBS n’échappe pas à cette règle ; en rendant OBS plus compatible avec des services indépendants du domaine comme PeerTube, ton travail est précieux. Nous aimerions voir ce travail poursuivi - indépendemment de s’il se retrouve fusionné dans cette PR ou non - pour qu’il bénéficie au plus grand nombre, OBS étant un des principaux outils de livestreaming à l’heure actuelle pour PeerTube.

En ce qui concerne ta PR, il me semble que les développeurs d’OBS ne soient pas prêt à assumer le maintient d’une telle fonctionalité. C’est compréhensible vu le nombre de lignes ajoutées, et je ne pense pas que @Chocobozzz veuille maintenir 1.2k+ lignes de code (dans un langage différent de PeerTube qui plus est) non plus. Dans l’optique de rendre le tout plus maintenable, il faudrait réduire la quantité de nouveau code propre à PeerTube et bien documenter quelle partie nous incomberait.

Circonscrire le code à un plugin nous paraît cependant plus intéressant : il permet à plus de gens d’assurer la maintenance du code sans pour autant nécessiter l’intervention de @Chocobozzz, dont l’emploi du temps est déjà attribué à d’autres tâches. Pour continuer ton travail sous forme de plugin, que te reste-t-il à faire et comment pouvons-nous t’aider ?

Le but pour nous, tu l’auras compris, est non seulement d’améliorer l’UX d’OBS avec PeerTube, mais aussi de garder un équilibre en terme de maintenabilité, quitte à ne pas implémenter toutes les fonctionalités que tu listes plus haut pour la gestion de token notamment.

2 « J'aime »

Actuellement, j’étais en train de travailler sur le sélecteur de live « déjà crée ».
Mais vu ce qui a été dit dans le PR, j’essaie de voir comment transformer mon travail sous forme de plugin pour OBS.

Pour l’instant je cherchais à voir et à estimer ce que je dois faire pour créer ce plugin mais aussi faire en sorte qu’OBS puisse gérer ce type de plugin (ajout de service) si ce n’est pas le cas.

Je pense que j’aurais du dès le début partir sur un plugin que sur juste un PR.

Je vous tiendrais au courant ici-même.

Edit: Merci du message

1 « J'aime »

Juste un petit message de soutien, pour dire que je trouve l’idée super. J’espère que tu va trouver une solution.

1 « J'aime »

Je me permet d’en rajouter une couche aux messages de @rigelk et @JohnLivingston pour dire bravo et merci pour ce travail.

J’imagine qu’il doit y avoir une certaine frustration à se dire que ta PR pourrait se voir refuser :-/

Je n’ai aucune idée quant à savoir si un plugin est jouable ou pas, mais je peux juste confirmer et appuyer le fait que cela serait précieux non seulement pour PeerTube, mais - si on se projette un peu dans le temps - pour d’autres logiciels libres qui souhaiteraient streamer plus facilement avec OBS.

Bref, @rigelk a déjà tout (très bien) dit, mais je voulais confirmer notre intérêt pour tes travaux.

Quelle que soit ta décision (et tes envies) : merci encore du travail effectué et du temps passé !

2 « J'aime »

Petite mis à jour :

  • J’ai réussi à fabriquer un CMakeLists.txt pour compiler mon plugin dans l’arbre d’OBS ou lieu d’un standalone. Je débute dans le CMake.
  • Je commence à croire que ce plugin ne relève pas de l’impossible
  • Je m’inspire de StreamFX pour m’aider
  • Je commence déjà à complèter l’API service de libobs avec des choses absentes par rapport à l’API encoder, je pense que ce n’ai que le début
  • Pour l’instant, je suis juste sur la partie ajouter un service dans OBS qui est très séparé de ce qui relève du client OAuth et du reste

Edit: je précise que l’API service de libobs est incomplète, pour créer le plugin je dois aussi terminer l’API.

2 « J'aime »

Top ! Et en effet avec OBS comme reference pour le « live streaming », au point que les webcam, casques audio, etc mettent le logo OBS sur leur boites (!) cela vaut clairement la peine. Je fais souvent l’aller/retour entre PeerTube et OBS pour ajouter la clef, lancer un nouveau stream, relancer apres verifier que cela fonctionne bien y compris l’enregistrement, etc pour etre impatient de pouvoir tester !

1 « J'aime »

Tout pareil !

Mise à jour avec une sorte de feuille de route:

Pour arriver à créer plugin PeerTube je dois :

  • Modifier la page des paramètres de Stream (flux) pour qu’il accepte de nouveau les plugins, ceci cassera les intégrations Twitch et Restream
  • Déprécier le plugin rtmp-services qui contient les type rtmp_common et rtmp_custom
  • Créer le plugin intégré custom-service pour remplacer le type rtmp_custom avec custom_service
  • Créer le plugin intégré obs-services qui ajoutera un type par service (ex: Twitch - twitch, YouTube - youtube) au lieu qu’ils aient tous rtmp_common comme type
  • Créer un plugin qui gèrent les services avec des comportement particulier comme les système d’ingestion de flux
  • Améliorer la gestion des protocoles de live pour les services pour que un service puisse gérer plusieurs protocoles (ex: YouTube gère HLS et RTMPS)
  • Créer des plugins pour restaurer l’intégration OAuth de Twitch et Restream
  • Autre peaufinage nécessaire
  • Essayer de re-rendre utilisable le plugin déprécié pour transiter plus facilement vers les nouveaux
  • Mettre à jour la doc sur l’API service
  • Espérer que tous ces changements soient acceptés
  • Et finalement créer le plugin pour PeerTube

Les 4 premiers points sont déjà bien avancés, je commencerai à créer un PR sur ces modifications, après que au moins ces derniers soient quasiment terminés pour voir ce qu’en pense l’équipe d’OBS sur tout ceci.

J’aurais pu faire moins et laisser le vieux plugin mais tant qu’on y est. Je préfère essayer de faire le ménage.

Edit: La route est longue mais la voie est libre. :wink:

7 « J'aime »

Update time,
À propos des changements nécessaire à OBS:

Disclaimer: tous les liens sont en anglais

J’ai crée un PR brouillon avec pour l’instant que le nouveau plugin et des modification de l’UI pour le rendre « utilisable ». Rien ne garantit pour le moment qu’OBS puisse utiliser ces services pour streamer sans d’autre modifications.

Il y eu des discussions à propos du fait que j’avais zappé l’étape d’écrire un RFC dans ce dépot auparavant. Je n’étais pas au courant de cette étape.
La discussion à propos de tous ça est clos. Pas besoin d’intervenir merci.

Le but d’un RFC principalement dans ce cas là est de parler autour de changement d’une certaine échelle qu’une personne veut apporter au projet.

Voici le PR brouillon du RFC. Ce dernier essaie de décrire, les changements et améliorations que je voudrais apporter à la partie service d’OBS.

Conclusion, une discussion sur le RFC doit être faite pour ensuite engagé une discussion sur les changements que j’apporte avec le premier PR.

2 « J'aime »

Mise à jour :
À force de réfléchir sur la RFC 39, cette dernière s’est retrouvé devisé en deux :

  • La RFC 38, elle propose l’implémentation d’une API sur les Protocoles facilitant l’ajout de futur protocole et sortie lier aux protocole
  • La RFC 39, l’amélioration des services qui est dépendante à la RFC 38 qui permettra d’ajouter un plugin PeerTube

Ça avance à son rythme

PS: Je travaille aussi sur l’implémentation dans des branches du fork, pour l’instant seul la RFC 38 est à jour.

1 « J'aime »

Petite mise à jour, je travaille toujours dessus mais la séparation des intégrations prends du temps.

1 « J'aime »

En tout cas merci pour ton travail et surtout de nous tenir au courant de tes avancées :slight_smile: .

1 « J'aime »

Depuis que la V4 RC de PeerTube est sorti, je me suis dis qu’un billet de mis à jour plus long serait cool, donc voici:

  • Pendant que je travaillais sur mes RFCs, j’ai aussi travaillé sur flatpak-builder pour ajouter la possibilité d’utiliser des clé API secrète sans les faire fuiter dans le manifeste du paquet pour rendre le flatpak d’OBS plus complet en fonctionalité (Ma position sur les flatpaks est neutre, je ne suis ni fan ni contre). Un peu éloigné des RFCs mais c’est en rapport avec OBS.
  • Les RFCs ont été séparé en deux PRs/MRs :
    • RFC 45 : Ajouter la notion de protocole dans les sorties destiné aux services de streaming (une réécriture totale de la RFC 38).
    • RFC 39: La refonte des services pour permettre aussi à des plugins tiers d’ajouter leur service.
  • Une partie du travaille est sur mon fork d’OBS github sur les branches commençant par rfcs-.
  • J’ai commencé la séparation des intégrations (pas pousser sur le fork) et ça va prendre du temps. Surtout si Twitch ne répond jamais à mes tickets de support pour des soucis qui m’empêche de me connecter sur l’intégration Twitch car il me répond qu’avec des réponses automatiques :face_with_symbols_over_mouth:.
2 « J'aime »

Ce la fait maintenant plus d’un an que j’ai commencé ça, juste une update pour dire que ça prend juste du temps.

6 « J'aime »

Grosse nouvelle, avec la nouvelle beta 29.1 sorti.
RFC 45 est maintenant implémentée dans OBS Studio.
Prochaine étape RFC 39.

5 « J'aime »

Génial !! C’est chouette de voir que ça progresse.

Hello @tytan652 , est il possible de tester la beta ? :slight_smile:

La deuxième RFC 39 n’est pas encore revues et approuvé par OBS Project.

Edit: Il faut lire le topic en entier pour cerner la situation.