Où en est Gstreamer ?

Posté par  (site web personnel) . Modéré par Nÿco.
Étiquettes : aucune
0
15
jan.
2004
Technologie
Gstreamer est une infrastructure multimedia basée sur le concept de "pipeline" qui permet de facilement réorganiser des blocs fonctionnels afin d'offrir une grande versatilité aux applications clientes.

Christian Schaller (qui est un des développeurs) a écrit un article de présentation assez complet et très accessible sur cette infrastructure réellement innovante.

À ce sujet une petite citation : GStreamer was not a simple re-implementation of something which had been done before. I guess we did what Steve Balmer claims free software never does: we innovated.

Le fait que le projet soit désormais hébergé sur Freedesktop.org est une indication qu'il est maintenant reconnu comme une application ayant vocation à être largement interopérable et standardisée. L'article aborde les questions suivantes :
- Présentation de base
- Gstreamer dans l'embarqué
- Gstreamer sur les serveurs
- Gstreamer sur les ordinateurs de bureau
- L'utilisation dans GNOME
- L'utilisation dans KDE
- Les plans pour le futur
- Les logiciels concurrents

Aller plus loin

  • # Il faut bien que quelqu'un se dévoue pour la faire ...

    Posté par  . Évalué à -6.

    DTC !
  • # quelqu'un se dévoue ?

    Posté par  (site web personnel) . Évalué à 0.

    bon, je suis pas super au courant, mais du peu que j'ai compris des liens, ca a l'air de dire que ca fait comme Video-LAN, non ? ca permet de *piper* du stream (mixé, vidéo, son...)...

    et puis c'est un peu prétencieux son *we inovated*, non ? je pense pas que apache ou gnu, dans leur globalité n'aient fait que du copier/coller...

    dans le concept de base (ils ont pas inventé le C) peut être (et encore, pas sur que tous les projets Open source ne le soient... ) mais dans la qualité de réalisation, dans la puissance du code, dans les performances...

    bref, pas embalé par la dépèche, mais si quelqu'un se sent de me démontrer que j'ai tort, en m'expliquant clairement en quoi c'est mieux/innovant, je suis prenneur !
    • [^] # Re: quelqu'un se dévoue ?

      Posté par  . Évalué à 7.

      Alors non ce n'est pas juste un streamer, c'est un gestionnaire de flux complet. Ca permet de splitter/concatener/diffuser des flux dans tous les sens en appliquant des filtres que ce soit sur le reseau ou via une application en local.

      Par exemple on peut prendre un fichier vob DVD, le passer dans un demuxeur, passer le flux DVD dans un decodeur Video, puis dans un encodeur Xvid, pendant que les 5 channels audio seront splittes en deux faisceaux (gauche+cente, droite +centre) puis passe dans un encodeur vorbis. Au final les flux videos et audios seront recuperes par un derniers filtres et lies dans un OGG.

      Voila poyur la difference, ca permet de construire un decodeur/encodeur/diffuseur brique a brique tranquilement.

      Pour le cote innovation par contre il y a un hic, Direct Show fait ca depuis des annees, et il y a meme une interface graphique qui marche tres bein (Graphedit). Bon ca passe pas par le reseau mais ca revient un peu au meme....

      Kha
      • [^] # Re: quelqu'un se dévoue ?

        Posté par  . Évalué à 2.

        """guess we did what Steve Balmer claims free software never does: we innovated. The basic design and basic idea came from a research project at Portland University, research work in which GStreamer project founder Erik Walthinsen participated. It was loosely modeled on DirectShow."""

        Cette ressemblance avec DirectShow etait précisée dans l'article.
    • [^] # Re: quelqu'un se dévoue ?

      Posté par  . Évalué à 3.

      > ca a l'air de dire que ca fait comme Video-LAN, non

      Je ne sais pas si Video-LAN fait ce genre de choses :
      http://gstreamer.net/images/gst-editor-0.4.1-clean.png(...)

      À mon humble avis, il fallait entendre « pipe » plutôt au sens composition d'outils, comme pour le shell, mais avec un joli cliquodrome, et c'est assez innovant pour ce que je connais des applications de streaming existantes.
    • [^] # Re: quelqu'un se dévoue ?

      Posté par  . Évalué à 6.

      bref, pas embalé par la dépèche, mais si quelqu'un se sent de me démontrer que j'ai tort, en m'expliquant clairement en quoi c'est mieux/innovant, je suis prenneur !
      Facile.
      Tu aurais lu l'article avant de commenter, tu aurais compris en quoi c'est mieux/innovant.
      Voila, en quoi tu avais tort, et c'est expliqué clairement.
      • [^] # Re: quelqu'un se dévoue ?

        Posté par  (site web personnel) . Évalué à 1.

        j'ai lu la dépèche avant de répondre, mais ce qui te parait limpide et clair peut me parraitre obscure. à première vue, ca ressemblait à du piping to con...
        • [^] # Re: quelqu'un se dévoue ?

          Posté par  (site web personnel) . Évalué à 0.

          oui mais quand j'ai écrit cette dépèche c'est dans l'idée que les gens (toi) allaient prendre le temps de lire aussi l'article.

          c'est pas ma dépèche qui est importante c'est l'article de présentation (que je trouve très bien fait).
    • [^] # Re: quelqu'un se dévoue ?

      Posté par  . Évalué à 2.

      En tout cas innovant ou non, j'ai pas envie de débattre, mais il n'empeche que c'est super puissant ;)
      Pour convertir un fichier flac en mp3, il suffit de faire un truc du genre
      gst-launch filesrc location=fichier.flac ! flacdec ! lameenc ! filesink location=fichier.mp3
      et voilà. Le fin du fin est que les dernières versions preservent meme les tags lors du passage flac->mp3 :)
      Tu peux aussi facilement jouer le fichier en replacant lameenc ! filesink par ossink, en ajoutant les elements qui vont bien, tu peux ajouter un plugin de visualisation pendant que la musique joue, ou bien avec le demuxer approprie, tu dois pouvoir utiliser une piste audio d'un dvd en entree, ...
      Bref, GStreamer est très prometteur (même si c'est malheureusement pas encore suffisamment stable à mon gout)
  • # Re: Où en est Gstreamer ?

    Posté par  . Évalué à 1.

    Dites, il n'y a que moi qui trouves que gstreamer est complétement lent ?

    Pour le son ou la video, cela rame (meme sans utiliser tout le proc). Alors que Xine ou Xmms s'en débrouillent très bien ?

    Est-ce de ma faute ou quelqu'un d'autre a remarqué ce genre de comportement ?
    • [^] # Re: Où en est Gstreamer ?

      Posté par  . Évalué à 1.

      Ca veut dire quoi "ca rame" ?
      Si tu veux dire que le son a tendance à sauter, c'est la faute du scheduler du noyau, ca marche nettement mieux en 2.6. Xine et xmms n'ont pas ce pb car ils creent plusieurs threads de lecture pour augmenter leurs chances qu'il y en ait un qui soit schedulé à temps...
      • [^] # Re: Où en est Gstreamer ?

        Posté par  . Évalué à 2.

        C'est un peu facile.
        Les applis qui merde au niveau son sont souvent des applis qui ne remplissent pas le buffer de la carte son. Si tu n'envoies que 30ms de données à la carte, faut pas se plaindre de ne pas être schedulé à temps pour envoyer la suite.
        xine est multithreadé et il n'y a pas de pb de scheduling.
        mplayer est monothreadé et il n'y pas de pb non plus.
        vlc n'a pas de pb non plus.

        gstreamer est foireux alors on accuse le noyau ?...
        • [^] # Re: Où en est Gstreamer ?

          Posté par  . Évalué à 1.

          >gstreamer est foireux alors on accuse le noyau ?...

          Des coupures dans la musique qui peuvent aller jusqu'à 2/3 secondes avec un noyau 2.4 et qui disparaissent totalement avec un 2.6, c'est quand même indicateur d'un problème dans le scheduler, même si ce n'est pas nécessairement entièrement la faute du noyau.
          gstreamer pourrait effectivement faire des efforts pour éviter ce genre de pbs mais
          1) ca peut etre vu comme un hack pourri pour contourner un bug du noyau
          2) c'est pas forcément facile à faire par rapport à des "simples" lecteurs de musique/vidéos qui n'ont que ce genre de détails à faire fonctionner correctement (la phrase précédente ne signifie pas que je trouve que c'est super facile de faire un player qui tue sa mère, j'essaie juste de mettre en relief le fait que gstreamer est beaucoup plus complexe architecturalement et dans ses objectifs que mplayer ou xine)
          • [^] # Re: Où en est Gstreamer ?

            Posté par  . Évalué à 2.

            Je ne vois pas de problème dans mon noyau lorsque j'utilise xmms, xine ou mplayer. C'est totalement fluide.... en 2.4.x ou en 2.6.x (je suis sous 2.6.1 avec le préemptif).

            Mais lorsque j'utilise gstreamer, cela saute, cela cafouille, et des fois cela plante... D'où cela vient-il ? La faute aux codecs ? Ou l'architecture est encore à revoir ?

            Ce qui m'étonne le plus, c'est que dans l'article sur OSNews, je m'attendais à voir au moins un passage sur: "Bon, pour l'instant les perfs sont pas grandioses à cause de ..., on va améliorer ça dans l'avenir en faisant ...".

            Mais là, RIEN ! Pas même la moindre remarque sur le fait que cela rame tout de même considérablement (et ne dis pas le contraire, je ne vois pas pourquoi le 2.4 aurait du mal à jouer du son ou afficher une vidéo tout ça à cause de problème de scheduling... la complexité du scheduler n'est rien devant la décompression vidéo ou audio).

            Alors, je suis _un_peu_ étonné ! Voila !
            • [^] # Re: Où en est Gstreamer ?

              Posté par  . Évalué à 1.

              Prends une appli avec un seul thread.
              Si le noyau est pas très sympa avec, et la schedule au petit bonheur la chance, c'est à dire un coup regulièrement toutes les 100 ms, puis ne la schedule plus pendant 2s parce que l'utilisateur a décidé de changer de bureau, ... si l'appli en question doit jouer de son de manière continue, sa tache devient assez difficile...
              Maintenant, tu peux faire la technique xine (enfin d'après ce que j'ai compris, xine fait ça, si ca se trouve j'ai super mal compris, merci de me corriger si je raconte n'importe quoi): tu lances 15 threads, t'as donc 15 fois plus de chance d'être schedulé en moins de x ms, tu es donc beaucoup moins affecté par d'eventuelles grosses irrégularités entre les instants ou tu es schedulé. Mais c'est de la triche :)

              Si tu t'inquiete des perfs, tu peux tenter un gst-launch filesrc location="somefile.mp3" ! mad ! filesink location="somefile.uncompressed"
              Ca te permettra de te donner une idée des performances de gstreamer en ce qui concerne la décompression d'un mp3 (j'ai pas testé, mais a priori ca met beaucoup moins de temps que la durée reel du mp3, et plus de temps qu'une appli spécialisée dans la lecture de mp3)
              • [^] # Re: Où en est Gstreamer ?

                Posté par  . Évalué à 1.

                Je ne vois vraiment pas ce que vient faire le multi-threading là dedans !!!

                Le principe des threads est de profiter au mieux des ressources d'une machine (qu'elle soit mono ou multi processeur, ou encore qu'elle possède un support à l'hyper-threading). Mais cela n'explique en rien pourquoi Gstreamer est lent... ou alors je n'ai pas compris.

                Le fait que l'appli machin arrive à séparer la décompression vidéo en plusieurs threads concurrents montre seulement qu'elle est codée de manière plus intelligente que gstreamer (d'ailleurs, je ne suis pas sûr que gstreamer soit mono-threadé !!!). Mais, cela n'explique pas les saccades dans la lecture des fichiers audio ou vidéo.

                Personnellement, je me base sur les logiciels i-Tunes et le display vidéo intégré dans gnome. Et, soit les deux applis sont programmées n'importe comment, soit gstreamer est totalement à revoir au niveau de la performance....

                Enfin, pour ton exemple du mp3, je te signale que le fait qu'il traduise un fichier mp3 en moins de temps qu'il ne met à le jouer, montre simplement que le problème de gstreamer repose principalement au niveau du temps-réel. C'est à dire qu'il n'arrive pas à délivrer le son voulu au moment voulu... Donc, tout leur cinéma sur leur "low-latency" est à revoir... ce qui est possible d'ailleurs, mais je n'ai pas encore été voir le code...
                • [^] # Re: Où en est Gstreamer ?

                  Posté par  . Évalué à 1.

                  Pour l'histoire de mp3->disque, j'en parlais justement pour prouver que gstreamer n'est pas "lent" d'un point de vue décodage et tout ça, mais que les problèmes apparaissaient effectivement des qu'il s'agit de jouer un son en continu. Pour moi "lent" ca signifie qu'il utilise 100% du cpu et n'arrive meme pas à produire suffisamment de données. Là on n'est pas dans ce cas de figure comme le montre le test mp3->disque

                  Et donc, si c'est tout de la faute de gstreamer, comment expliques-tu qu'il n'y ait plus de pb avec un noyau 2.6 ?
                  • [^] # Re: Où en est Gstreamer ?

                    Posté par  . Évalué à 1.

                    Justement, moi je suis sous 2.6 depuis le 2.6.0-test6 et j'ai encore des problèmes !!!

                    Et puis, de toute façon, comme le faisait très justement remarquer quelqu'un d'autre, le 2.4 devrait suffire pour regarder un film. On le fait bien avec xine ou mplayer... pourquoi gstreamer aurait-il "besoin" d'un 2.6 ?
                    • [^] # Re: Où en est Gstreamer ?

                      Posté par  . Évalué à 1.

                      > Justement, moi je suis sous 2.6 depuis le 2.6.0-test6 et j'ai encore des problèmes !!!

                      C'est un autre problème alors ;) Toujours est-il que moi j'avais des pbs au temps du 2.4, et que maintenant c'est beaucoup mieux (faudrait que je refasse des tests approfondis pour être catégorique).

                      >On le fait bien avec xine ou mplayer... pourquoi gstreamer aurait-il "besoin" d'un 2.6 ?

                      Relis le thread 2/3 fois, j'aime pas trop me répéter... J'ai rien contre expliquer les points pas clairs dans ce que je raconte par contre ;)
                      • [^] # Re: Où en est Gstreamer ?

                        Posté par  . Évalué à 1.

                        Je suis désolé, mais tu ne peux pas dire que le scheduler du 2.4 est si mauvais que cela... ou alors tu n'y connais rien. Ton argumentation ne tient pas debout. Pourquoi le fait d'avoir plusieurs threads serait tricher ? Chaque thread n'est pas redondant avec les autres, ils se coordonnent entre eux. Bref, je ne suis absolument pas convaincu par ton argumentation. Mais moi aussi je n'aime pas trop me répéter, alors... :)


                        PS: C'est pas itune que j'utilise, c'est rhythmbox (autant pour moi)
                        • [^] # Re: Où en est Gstreamer ?

                          Posté par  . Évalué à 1.

                          J'ai pas non plus dit que le scheduler du 2.4 était complètement pourri, j'ai surtout dit qu'il avait des comportements suboptimaux dans certains cas, en particulier des temps de latence qui peuvent etre assez eleves (il a d'ailleurs été en grande partie réécrit dans le 2.6, et les patchs low latency et preemptible kernel du 2.6 tentent aussi de diminuer ces temps de latence, donc y avait bien des petits pb de ce cote là, non ? ;).
                          Par "tricher", je veux dire que c'est inutilement bourrin, et que c'est pas très joli. Ils sont redondants dans le sens où ils font la même chose, et leur seule raison d'être, c'est qu'un seul thread n'est pas suffisant pour obtenir une lecture fluide. Ca denote donc un certain manque au niveau de l'os si on est obligé de recourir à de telles techniques pour s'assurer des performances acceptables... (je me limite à la lecture de musique, j'y connais pas grand chose en vidéo, et en plus le support de vidéo dans gstreamer est moins avancé que le son).

                          Pour rhythmbox, si tu veux éviter les pb avec gstreamer, tu peux le recompiler pour qu'il utilise xine (c'est ce que je faisais au temps du 2.4)

                          Dans ton 2.6, t'as activé tout ce qui est preempt et low latency ?
                          • [^] # Re: Où en est Gstreamer ?

                            Posté par  . Évalué à 1.

                            > Pour rhythmbox, si tu veux éviter les pb avec gstreamer, tu peux le recompiler pour qu'il utilise
                            > xine (c'est ce que je faisais au temps du 2.4)

                            Ça je savait pas. Je vais essayer. Merci.

                            > Dans ton 2.6, t'as activé tout ce qui est preempt et low latency ?

                            Oui.
                • [^] # Re: Où en est Gstreamer ?

                  Posté par  . Évalué à 1.

                  Encore une fois, le multithreading intervient parce que d'après ce qu'on m'a dit, certaines applis qui jouent de l'audio lancent plusieurs threads à la fois font tous la meme chose, c'est à dire remplir le buffer de la carte son. Pour le noyau 2.4, un thread = un process, donc plus si t'as plusieurs threads qui tentent de faire la meme chose (remplir le buffer de ta carte son), eh bien tu as tout simplement plus de chance que la chose en question soit faite rapidement...
                  Et avoir plusieurs threads qui se font concurrence pour faire exactement la même chose uniquement pour être sûr que le noyau daignera donner la main à l'appli avant qu'il ne soit trop tard, je n'appelle pas vraiment ça être « codée de manière plus intelligente que gstreamer » et « profiter au mieux des ressources d'une machine ». C'est uniquement un gros hack pas beau à mes yeux, même s'il a le mérite de très bien fonctionner d'un point de vue utilisateur (c'est assez malin aussi comme hack je trouve, mais ca ne le pas acceptable pour autant).
                  • [^] # Re: Où en est Gstreamer ?

                    Posté par  . Évalué à 2.

                    Pardon?

                    Donc, d'apres ce que tu dis, xine lance plusieurs threads faisant la meme chose, tentant de bourrer le buffer de la carte son, par exemple, afin d'arriver dans les temps ?!
                    Désolé, tout faux ;-)
                    xine est multithreadé, chaque thread a une fonction (demultiplexage, sortie{audio,video},...).
                    Tu devrais jeter un coup d'oeil au code pour te donner une idée de la facon dont ca fonctionne.

                    --
                    • [^] # Re: Où en est Gstreamer ?

                      Posté par  . Évalué à 1.

                      Ok, ok désolé :)

                      Comme je disais dans un message précédent :

                      > (enfin d'après ce que j'ai compris, xine fait ça, si ca se trouve j'ai super mal
                      > compris, merci de me corriger si je raconte n'importe quoi)
          • [^] # Re: Où en est Gstreamer ?

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

            1) ca peut etre vu comme un hack pourri pour contourner un bug du noyau

            C'est moi qui t'ai mal compris ou tu dis que remplir le buffer de la carte son c'est un hack pourri ? Sinon, peux-tu m'expliquer en quoi c'est mal ?
            • [^] # Re: Où en est Gstreamer ?

              Posté par  . Évalué à 1.

              Non non, je parlais de trucs du style "lancer plein de threads qui s'occupent tous de remplir le buffer de la carte son en espérant qu'il y en ait un qui soit schedulé à temps"
              • [^] # Re: Où en est Gstreamer ?

                Posté par  (site web personnel) . Évalué à 1.

                Ah oui, là je suis d'accord, c'est totalement pourri comme fonctionnement :-)
                • [^] # Re: Où en est Gstreamer ?

                  Posté par  . Évalué à 0.

                  Ah oui, tu penses que le multi-threading n'a pas d'avenir ! Marrant, il y a beaucoup de gens qui pensent que c'est le contraire ! :)
                  • [^] # Re: Où en est Gstreamer ?

                    Posté par  . Évalué à 2.

                    Après les claviers qui se blo il y a les navigateurs qui coupent les phrases ?
                    Mon message c'étiat pas "lancer plein de threads" sans rien après, c'était "lancer plein de threads qui s'occupent tous de remplir le buffer de la carte son en espérant qu'il y en ait un qui soit schedulé à temps"

                    Enfin on va pas épiloguer, perso je trouve ça tout pourri, toi tu as l'air de trouver ça particulièrement subtil et élégant, chacun ses gouts ;)
                    • [^] # Re: Où en est Gstreamer ?

                      Posté par  . Évalué à 1.

                      Biensûr que c'est pourri, et c'est pour ça que personne ne l'utilise.
                      Ne me dis pas que tu trouve xine pourri à cause de ça, xine ne marche pas comme ça du tout.
                      Je sais que tu ne le dis pas mais c'est légerement insinué.
                  • [^] # Re: Où en est Gstreamer ?

                    Posté par  . Évalué à 1.

                    Tiens, tant qu'on est en plein troll, les threads c'est complexe donc à fuir autant que possible (sans faire non plus des trucs super laids uniquement dans le but d'éviter d'utiliser des threads).
                  • [^] # Re: Où en est Gstreamer ?

                    Posté par  (site web personnel) . Évalué à 1.

                    Rien à voir :-) J'ai jamais dit que le multithreading n'avait pas d'avenir, j'utilise tout les jours une plateforme où sans thread je serais dans la merde : Java :-)

                    Je dis que lancer 15 threads faisant extactement la même chose dans l'optique "Y'en a bien un qui passera", ben c'est pas très propre ... Tu ne crois pas ?
              • [^] # Re: Où en est Gstreamer ?

                Posté par  . Évalué à 1.

                euh t'as fumé quoi pour insinuer que xine fait ça ?

                c'est complètement faux !

                xine c'est :

                1 thread pour le demuxer
                1 thread pour chaque decoder (1 audio + 1 video)
                1 thread pour la sortie video
                1 thread pour la sortie audio
                + d'autres pour le gui

                Donc 1 thread chargé de remplir le buffer de la carte son.
    • [^] # Re: Où en est Gstreamer ?

      Posté par  (Mastodon) . Évalué à 1.

      Tu utilises ALSA pour le son ? Aux dernières nouvelles (mais les miennes datent un peu) les pilotes ALSA de gstreamer sont foireux. C'est pour ça que je ne peux pas utiliser Rhythmbox.
      • [^] # Re: Où en est Gstreamer ?

        Posté par  . Évalué à 0.

        Effectivement, j'utilise Alsa !!!!

        Et il y a un patch, ou une version plus récente qui permet de corriger ce défaut ?

        En tout cas merci ! Cela m'éclaire déjà plus que le "multi-threader c'est mal".
        • [^] # Re: Où en est Gstreamer ?

          Posté par  . Évalué à 1.

          J'ai le même problème que toi avec rhythmbox (son qui saute), mais pas avec juk pourtant lui aussi basé sur gstreamer ! J'utilise aussi alsa.

          Dommage, parce que QT (juk) sur un bureau non-KDE, c'est...
          enfin, je préfère rien dire ;-)

Suivre le flux des commentaires

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