Forum général.cherche-logiciel Logiciel de Streaming vidéo en direct

Posté par  (site web personnel, Mastodon) . Licence CC By‑SA.
2
15
nov.
2014

Bonjour,

Je suis à la recherche d'une solution de streaming vidéo, qui puisse notamment faire du direct.
Mon cas d'usage premier serait de pouvoir enregistrer mon bureau et des gens pourrait voir la vidéo de ce que je fais en live. D'autre cas d'usage pourraient être de filmer avec une caméra ou webcam + micro et que des gens puissent voir en live, etc.

Pour le côté client final, pouvoir lire avec un lecteur classique (VLC, mplayer, etc.) est super cool, mais je souhaiterais également pouvoir mettre en place un client web (pour monsieur Michu qui connaît que Youtube et consort).

Mes recherches m'amènent sur Icecast pour la partie serveur. Je me pose notament une question cependant sur la pertinence du choix pour la partie vidéo car tout dans la page du projet semble vraiment orienté "audio". Y a des mentions diverses qui disent que la vidéo marche aussi, mais c'est à chaque fois entre parenthèse ou clairement secondaire, ce qui fait peur.
Ex, dans la FAQ:

Icecast.org, the project, is a collection of programs and libraries for streaming audio over the Internet.
[…]
Icecast streams audio (and video) to listeners/viewers, and is compatible with Nullsoft’s Shoutcast.

Est-ce le bon choix pour du streaming vidéo? Si oui, avez-vous des suggestions des meilleurs clients source, clients de lecture et clients web?

Mes recherches m'ont aussi emmené sur un autre logiciel appelé Freeseer. Celui-ci semble orienté présentation, et semble avoir ce que je souhaite et aussi une partie serveur, d'après la doc. Mais j'ai du mal à faire la comparaison. Surtout que j'avais déjà entendu le nom "Icecast", mais c'est la première fois que je vois "Freeseer".

Donc avant que je m'aventure plus dans l'un ou dans l'autre et passe des heures à configurer et tester, je me demandais si vous auriez des conseils. Le streaming vidéo est plutôt commun dans le Libre, notamment avec les streaming de conférences. Je suis sûr que plein de gens ici ont une expérience.
Merci!

  • # un autre produit : big blue button

    Posté par  . Évalué à 2.

    Opensource, à installer sur un serveur,
    permettant l'interaction entre les utilisateurs mais avec peut-etre possibilité de limiter qui fait quoi.

    http://bigbluebutton.org

  • # VLC, what else !

    Posté par  . Évalué à 3.

    Pour la capture du bureau

    Tout simplement avec l'option Desktop dans les périphériques de capture

    https://wiki.videolan.org/Documentation:Streaming_HowTo_New/#Streaming_using_the_GUI

    Sur un serveur, grâce à vlc-nox, il fait serveur de streaming

    Il ne fait pas le café… Pour l'instant

    • [^] # Re: VLC, what else !

      Posté par  (site web personnel, Mastodon) . Évalué à 3.

      Salut. Oui ça c'est pour le client source, mais dans le contexte d'un streaming pour que des gens hors du réseau puissent se connecter, hormis le cas où le client est aussi serveur http par exemple (cas simple d'un fichier déjà enregistré), il faudra encore un serveur icecast (je vois qu'y a une prise en charge d'icecast dans VLC en effet). Donc en gros, tu conseilles Icecast en tant que serveur et VLC en tant que client?

      Mais puisque je vois que tu conseilles vlc-nox comme serveur de streaming, alors je me dis que tu conseilles peut-être plutôt d'encoder dans un fichier avec VLC sur le bureau, puis d'envoyer le fichier sur le serveur, puis là d'utiliser vlc-nox. Ce n'est donc plus du live mais du différé.

      Ou alors j'ai pas compris une autre possibilité? Je rappelle que je veux pouvoir enregistrer et streamer en direct en passant par un serveur, car le client source d'enregistrement (un ordi pour utilisation desktop) enregistre mais n'est pas celui qui streame.

      Film d'animation libre en CC by-sa/Art Libre, fait avec GIMP et autre logiciels libres: ZeMarmot [ http://film.zemarmot.net ]

      • [^] # Re: VLC, what else !

        Posté par  . Évalué à 2.

        plutôt d'encoder dans un fichier avec VLC sur le bureau, puis d'envoyer le fichier sur le serveur, puis là d'utiliser vlc-nox.

        non, il te propose d'enregistrer ton bureau avec VLC, de l'envoyer à ton serveur vlc-nox, tes "clients" se connectant alors à ton serveur vlc-nox.
        en gros :

        VLC sur ta machine (qui capture le bureau) => VLC-Nox (sur ton serveur) => VLC (sur la machine cliente)

        • [^] # Re: VLC, what else !

          Posté par  (site web personnel, Mastodon) . Évalué à 2.

          Oh ok, vlc est donc capable d'envoyer un stream directement à l'instance distante de vlc-nox pour que celle-ci puisse le redistribuer? J'arrive pas à trouver de doc qui explique cela. Je ne trouve que des docs qui explique comment streamer des fichiers existants. Vous auriez des liens?

          Film d'animation libre en CC by-sa/Art Libre, fait avec GIMP et autre logiciels libres: ZeMarmot [ http://film.zemarmot.net ]

          • [^] # Re: VLC, what else !

            Posté par  . Évalué à 2.

            ben jolitorax parle de streamer la source "desktop"
            et t'as donné un lien

            • [^] # Re: VLC, what else !

              Posté par  (site web personnel, Mastodon) . Évalué à 3. Dernière modification le 15 novembre 2014 à 23:53.

              Je pense qu'il y a incompréhension. J'ai bien entendu lu le lien qui m'a été donné. Les méthodes de streaming sont: "affichage local", "fichier", "envoi vers Microsoft Windows Media Player" qui ne correspondent pas au problème; HTTP, qui si je comprends bien permet de streamer directement comme un serveur HTTP, et donc serait parfait si le serveur source et le serveur de streaming étaient la même machine (c'est la méthode que les gens semblent proposer avec vlc-nox — qui n'est qu'un VLC normal sans rien de particulier, hormis qu'il ne repose pas sur X — quand on veut faire un serveur de streaming media pour lequel on a déjà des fichiers en local), mais ce n'est pas mon cas d'usage; UDP et RDP dont je ne suis pas sûr mais c'est apparemment pour du unicast/multicast; et enfin IceCast dont je parle plus haut.

              Vous semblez tous les deux dire qu'il y a apparemment un autre moyen en connectant 2 instances de VLC sur deux machines différentes, l'un servant de sources, l'autre de serveur de serveur de stream. Je veux bien vous croire, mais je ne trouve aucune information à ce sujet nulle part, et le lien donné ne parle pas de cette possibilité additionnelle. Donc je demande si vous avez des liens qui expliqueraient une telle chose (aussi, il va sans dire, mais j'attends une solution un minimum sécurisée. Je veux pas ouvrir un port qui accepte n'importe quelle source sans login, clé ou autre type d'identification car mon cas d'usage passe par le net, non au travers d'un réseau interne).

              Edit: pour être plus clair, VLC permet en effet de streamer du desktop. Là n'est pas la question. Mais le serveur (la machine qui va gérer la partie streaming) n'a pas de desktop par définition. Il doit donc recevoir le média généré par un autre ordinateur. Il doit donc y avoir un protocole entre la machine "source" et la machine "streaming". Je n'ai pas l'impression que VLC puisse gérer un tel transport de média d'un VLC à l'autre. Ou du moins je trouve pas, et le lien donné n'indique pas cela. Donc je veux bien avoir d'autres liens si une telle chose existe.

              Film d'animation libre en CC by-sa/Art Libre, fait avec GIMP et autre logiciels libres: ZeMarmot [ http://film.zemarmot.net ]

              • [^] # Re: VLC, what else !

                Posté par  . Évalué à 2.

                le lien donné te dit pourtant que VLC peut streamer un peripherique de capture vers les destinations :

                • Display locally : display the stream on your screen. This allows you to display the stream you are actually streaming. Effects of transcoding, rescaling, etc. can be monitored locally using this function.
                • File : Save the stream to a file.
                • HTTP : Use the HTTP streaming method. Specify the TCP port number on which to listen.
                • MS-WMSP (MMSH) : This access method allows you to stream to Microsoft Windows Media Player. Specify the IP address and TCP port number on which to listen. Note: This will only work with the ASF encapsulation method.
                • UDP : Stream in unicast by providing an address in the 0.0.0.0 - 223.255.255.255 range or in multicast by providing an address in the 224.0.0.0 - 239.255.255.255 range. It is also possible to stream to IPv6 addresses. Note: This will only work with the TS encapsulation method.
                • RTP : Use the Real-Time Transfer Protocol. Like UDP, it can use both unicast and multicast addresses.
                • IceCast : Stream to an IceCast server. Specify the address, port, mount point and authentication of the IceCast server to stream to.

                (j'ai mis en gras ceux qui sont des streams reseaux)

                et ca te precise que le plus utilisé c'est le HTTP, ou il suffit juste de preciser un port.
                le client se connecte alors à ton IP:PORT pour voir ton stream

                • [^] # Re: VLC, what else !

                  Posté par  (site web personnel, Mastodon) . Évalué à 2.

                  Oui mais c'est ce que je dis! VLC avec streaming HTTP, c'est pour la partie serveur. Là, ok on est d'accord. Mais il doit bien récupérer le stream du desktop d'une façon ou d'une autre (qui ne vient pas de la mēme machine, mais d'une autre). Soit c'est un fichier, et dans ce cas là, c'est plus du live; soit il existe un protocole qui connecte 2 VLC, celui du desktop qui sert de source (en enregistrant le bureau) et celui du serveur qui écoute sur un port et une IP donnée.

                  Dans les autres propositions, le streaming sur WMP ne me convient pas (je ne compte pas me limiter à un logiciel Windows seulement). On est sur linuxfr après tout! ;-)

                  RTP et UDP, c'est pour diffuser vers des addresses données (unicast/multicast).

                  Seul IceCast dans la liste semble correspondre au besoin, mais on n'est plus dans le cas "2 VLC" qu'on m'a présenté, mais dans celui plus classique VLC source + IceCast serveur que je connaissais déjà.

                  Donc j'essaie de comprendre ce cas "2 VLC" que vous me présentez comme répondant à ma problématique et qui n'est pas présenté dans cette liste.

                  Film d'animation libre en CC by-sa/Art Libre, fait avec GIMP et autre logiciels libres: ZeMarmot [ http://film.zemarmot.net ]

                  • [^] # Re: VLC, what else !

                    Posté par  . Évalué à 3. Dernière modification le 16 novembre 2014 à 00:42.

                    tu oublie juste un detail :
                    le VLC qui tourne sur ton "bureau" et qui enregistre ce qui se passe sur ton ecran,
                    ca en fait un "serveur" de streaming.

                    ensuite libre à toi de vouloir brancher dessus, soit un serveur relais, soit directement des "clients".

                    donc regardes le cas HTTP sous l'oeil suivant, et tu verras que tu as tout ce qu'il te faut :

                    1°) le PC source, il lance VLC, capture le desktop et propose le stream en ecoute sur le HTTP, il devient donc "serveur de stream"

                    2°) le serveur relais, il lance VLC, ecoute le stream de PC source, et le remet en ecoute sur HTTP

                    3°) le PC client, il lance VLC et vient ecouter le stream du serveur relais.

                    • [^] # Re: VLC, what else !

                      Posté par  (site web personnel, Mastodon) . Évalué à 2.

                      Salut,

                      Ok je vois, mais ça c'est du bidouillage. C'est acceptable si j'en ai besoin une fois et veut une solution un peu tarabiscotée mais rapide et sans me prendre la tête à chercher une vraie bonne solution de long terme. Si je vais dans ce sens là, je peux même faire encore plus simple: je n'ai pas besoin du VLC intermédiaire, je peux juste rediriger le flux directement du serveur vers le PC source.

                      Mais ça ne tient pas la distance: le PC source peut changer d'IP déjà parce que ma connexion n'a pas d'IP fixe contractuellement (même si dans les faits elle l'est habituellement); mais surtout quid si je me connecte depuis ailleurs? Et/ou avec un autre PC? Je dois à chaque fois refaire une manœuvre complexe? Et puis de nos jours, les foyers sont en général derrière un routeur, donc je dois rediriger les ports si je souhaite que le serveur puisse se connecter sur le PC source (puisque lui-même devenu serveur en attente de connexions). C'est possible (mais chiant) quand c'est chez moi et impossible si je souhaite me connecter depuis un réseau sur lequel je n'ai pas la main. Et même chez moi, je dois refaire la manœuvre si je souhaite utiliser un autre PC source.
                      Sans compter tous les problèmes de sécurité que l'on peut rencontrer dans ce genre de bidouillage où un serveur voudrait lire des données depuis une autre machine à travers le net sans aucune identification de la source ni sécurisation (c'est acceptable depuis un réseau local totalement sous contrôle uniquement).

                      En gros c'est pas du tout ce que je cherche. Ça je pouvais déjà bidouiller un système encore plus simplement avant de demander. Ce que je cherche, c'est une solution propre pour du long terme. C'est pour ça que je demande ce qu'il existe en solution existante et bien pensée. J'ai un serveur, il a une IP fixe accessible sur le net, et sans bidouillage à faire. Je veux juste lui installer un service maison de streaming, que j'associerai à un sous-domaine de mon domaine principal, de sorte qu'avec les logiciels adéquats, je suis capable de me connecter quand je veux en tant que "client source", depuis n'importe quel ordi et depuis n'importe où avec le login adéquat, et je peux donner une URI à des gens divers et variés sur le net pour que ces derniers puissent se connecter sur le serveur et y regarder ma vidéo en live (ces derniers n'ayant en général pas besoin de login par contre, bien qu'on puisse s'imaginer que des fois on veuille aussi limiter qui peut voir).

                      La solution BigBlueButton qui a été donné plus haut correspond bien plus (du peu que je peux lire). Et probablement IceCast aussi. Probablement FreeSee aussi. Maintenant je suis intéressé s'il existe d'autres solutions similaires et surtout par des retours d'expérience, et/ou des comparaisons de ces solutions.
                      Merci.

                      Film d'animation libre en CC by-sa/Art Libre, fait avec GIMP et autre logiciels libres: ZeMarmot [ http://film.zemarmot.net ]

                      • [^] # Re: VLC, what else !

                        Posté par  . Évalué à 2.

                        alors il ne reste plus qu'à mettre un serveur icecast sur ton serveur hebergé
                        tu lances le streaming du desktop avec VLC, avec en sortie ton serveur icecast.

                        les clients se connectent alors à ton serveur icecast (celui hebergé sur ton domaine)

                      • [^] # Re: VLC, what else !

                        Posté par  . Évalué à 3.

                        Sur ton poste de travail tu lance VLC, tu choisis Desktop et tu streame vers ton serveur. Ce qui donne un truc du genre dans la fenêtre Flux de sortie : MRL de stream généré

                        :sout=#duplicate{dst=std{access=udp,dst=mon_serveur.truc.fr:1234}}

                        Ici je fais de l'udp. Notes que les noms des fenêtres et des menus ont peut être changé car j'utilise une très vielle version de VLC.

                        Sur le serveur tu lance cvlc de manière permanente avec directement la bonne ligne de commande (tu peux en faire un démon) avec la commande du genre

                        cvlc upd://@:1234

                        Là ça diffuse en local sur ton serveur (tu peux faire facilement des tests entres 2 PC chez toi), tu peux ensuite tester les exemples du chapitre 4 de la documentation de VLC

                        Un truc du genre, pour reprendre le premier exemple de la page

                        cvlc upd://@:1234 --sout '#transcode{vcodec=mp4v,acodec=mpga,vb=800,ab=128,deinterlace}:standard{access=udp,mux=ts,dst=239.255.12.42,sap,name="TestStream"}'

                        La liste exhaustives des options de vlc, à lire avec un broc d'eau et une grosse boite d'aspirine

                        vlc -H

    • [^] # Re: VLC, what else !

      Posté par  . Évalué à 1.

      Juste une remarque, il semblerait que la version vlc-nox packagée chez debian ne possède pas la lib libavcodec_plugin.so ce qui peut être gênant, à moins qu'il y ait solution (assez propre si possible) que je ne connaisse pas ?

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.