Journal Essai de transcoding avec Gstreamer-0.10

Posté par  .
Étiquettes : aucune
2
20
oct.
2008
En préambule, il faut savoir que mon niveau de connaissance en vidéo est pratiquement nul. Je sais juste qu'il y a des formats de conteneurs de vidéo et d'audio.

Mon problème est le suivant : j'enregistre une émission avec ma freebox, puis je sauve l'enregistrement sur mon disque dur, mais ça fait quand même plus de 5Go pour 2 heures d'enregistrement, et je voudrais bien sauvegarder cette super émission sur CD ou DVD (et aussi pouvoir la revoir grâce au freeplayer).

J'utilise Debian/GNU Linux Lenny.

Évidemment, il y a bien des façons de résoudre ce problème, et le chemin que j'ai choisi de prendre n'est certainement pas le moins tortueux.

En fait, au dépar,t je voulais aussi expérimenter l'algorithme de compression (à moins que ce soit un codec) dirac - le codec de la BBC (http://fr.wikipedia.org/wiki/Dirac_(codec) ).

Après une rapide recherche sur Internet, je découvre que l'encodage et le décodage dirac est possible avec Gsteamer.

Quelques apt-get search et apt-get install plus tard, je constate que la documentation gst-launch est loin d'être limpide, mais avec pas mal de relecture de la page de manuel, des exemples sur Internet et avec un peu (trop peu) d'aide sur #gstreamer, j'arrive enfin à écrire un pipeline qui fonctionne:
gst-launch-0.10 -v filesrc location=direct8_tst.ts ! ffdemux_mpegts name=demuxer ! queue ! mpeg2dec ! ffmpegcolorspace ! schroenc ! queue ! oggmux name=mux ! filesink location=direct8_tst.ogg demuxer. ! queue ! mad ! audioconvert ! audioresample ! vorbisenc ! queue ! mux.

Les problèmes sont qu'en fait, je ne comprend pas vraiment bien ce que j'ai fait, que le son n'est pas synchronisé avec l'image, que mon pauvre Celeron met une heure pour encoder une séquence de 10mn, que le celeron n'arrive pas à rejouer le flux sans sauter d'image et que de toutes façons ni vlc-fbx (sur lenny) ni la freebox (à vérifier) ne peuvent décoder ce flux.

En remplacant schroenc par theora, on peut diffuser le flux sur la freebox.
  • # Synchronisation

    Posté par  . Évalué à 5.

    Le fait que le son ne soit pas synchronisé avec l'image vient du fait que durant le streaming, il y a des "frames" (images) qui sont zappé alors que le son est transmis. Les infos sur ces sauts sont disponibles dans le fichier mais pas forcément utilisées par les différentes outils de transcodage.
    Il faut donc toiletter le fichier pour pallier ce manque.
    Un petit lien framasoft :
    http://www.framasoft.net/article4756.html

    Ce logiciel est écrit en Java et il ne me semble qu'il soit pilotable en CLI.

    Ce problème est assez récurrent et il faut parfois chercher longtemps avant de trouver une réponse acceptable. Il me semble qu'il y a une requète pour mencoder, mais je ne remets plus la main dessus.

    Une fois cette étape passée tu pourras, utiliser n'importe quel outils du type avidemux ou autre mencoder, transcode, ffmpeg pour transcoder ta vidéo.

    En ce qui concerne Dirac, il me semble qu'il est toujours en cours de d'optimisation et que de toute manière ce codec nécessite une machine assez "récente" pour être utilisable, tout comme le H264.
    • [^] # Re: Synchronisation

      Posté par  . Évalué à 5.

      Les dernières versions de gstreamer sont capables de gérer la synchronisation, il faut pour celà utiliser le bon démultiplexeur et multiplexeur, cf mon commentaire plus bas.
    • [^] # Re: Synchronisation

      Posté par  . Évalué à 2.

      Faut quand même se la taper, l'interface complètement glucose de ProjectX (et ses plantages aléatoires)...

      D'autant, que pour ne pas faire de la bouillie sur les MPEG-TS (ces MPEG "pas comme sur les DVD", qu'on nous sert en broadcast) très abîmés, il n'est que trop conseillé, avec lui, de démuxer video et son, en deux fichiers, .m2v et .mp2...

      Le problème est que si c'est recollable sans problème, il y a souvent, d'expérience, un offset constant (video et son des deux fichiers ne démarrent pas en même temps... dans les "-250ms", chez moi)... bon, en bidouillant pour sortir un MPEG-PS ("comme sur les DVD") via, par exemple avidemux, pour donner à manger à, par exemple, MEncoder, c'est ce que j'ai vu de plus acceptable sous Linux pour transformer ces bizarres MPEG broadcastés (mais franchement... même si elle est utile pour découper les pubs... cette GUI ; ouchhhh !)...

      Cela dit, maintenant, je suis tenté de tester gst-fluendo-mpegdemux, évoqué plus bas...
    • [^] # Re: Synchronisation

      Posté par  . Évalué à 0.

      Pour mplayer, je crois que rajouter le filtre 'harddup' en bout de chaine (-vf harddup) peut aider.
  • # bug ts

    Posté par  . Évalué à 4.

    A ma connaissance, ffdemux_mpegts est buggé... donc déjà c'est mal barré pour la synchro audio.
    A ma connaissance, gst-fluendo-mpegdemux 0.10.15 corrige le problème.
    ensuite, quand on utilise des pipelines manuels, je crois qu'il il faut surcharger quelques paramètres, par exemple : queue max-size-buffers=0 max-size-time=0
    ensuite si tu ajoute "filesink location=myfile.ogg sync=true" tu devrais avoir la synchro d'activée

    pour plus d'information sur les paramètres des plugins :
    http://gstreamer.freedesktop.org/documentation/plugins.html
    • [^] # Re: bug ts

      Posté par  . Évalué à 3.

      Ça c'est de la balle comme info. C'est exactement pour rassembler des connaissances que j'ai poster ce journal. Merci Bench.

      Un tutorial clair pour les pipelines manuels serait vraiment top.
  • # mencoder

    Posté par  . Évalué à 3.

    A mon avis pour re-encoder des videos il n'y a pas mieux que mencoder (fait partie de mplayer). C'est tout en ligne de commande et il faut un peut d'habitude pour arriver a mettre tous les parametres correctement, mais une fois qu'on a ses scripts prets c'est un bonheur.
    • [^] # Re: mencoder

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

      Pour ceux qui sont allergiques aux CLI, il y a l'excellent avidemux, disponible pour GTK et Qt sous à peu pret toutes les distribs.
      http://fixounet.free.fr/avidemux/

      Un jour libre ?

      • [^] # Re: mencoder

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

        Je vote aussi pour mencorder.

        Et c'est typiquement le genre d'application que je préfère mille fois en ligne de commande qu'en clickodrome.

        En ligne de commande, je copie colle tous mes essais dans un fichier texte, ce qui permet de réutiliser ou modifier très facilement les paramètres pour encoder de nouveaux fichiers ou bien pour améliorer l'encodage.
        • [^] # Re: mencoder

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

          <parenthèse>C'est de pire en pire DLFP : dès qu'on site un logiciel qui possède une interface graphique, on se laisse répondre que dans un terminal c'est mieux. Faut ptet pas oublier que certains ne sont pas terminodépendants et que 3 clics pour faire certaines tâches, c'est pas si mal que ça, surtout si ça évite d'avoir à retenir une ligne de commande avec 25 paramètres et qui fait 2 lignes de long.</parenthèse>

          Il existe des cas, notamment pour le transcodage, où avoir un clicodromme peut être utile, notament pour voir le résultat d'un filtre de crop ou pour sélectionner les marqueurs de début et de fin d'encodage...


          Un jour libre ?

    • [^] # Attention à mencoder

      Posté par  . Évalué à 2.

      Il faut quand même se méfier avec Mencoder : il est capable de te sortir des vidéos uniquement lisibles avec Mplayer. Si c'est ce que tu utilises, tu peux ne pas t'en préoccuper, mais si tu veux que d'autres sachent le lire, il y a des trucs à retenir et des formats/codecs à ne pas utiliser.

      Un exemple : le multiplexeur MP4 de Lavf est buggé (il y a un message lorsque tu l'utilises, mais comme plein d'infos sortent, ça ne saute pas forcément aux yeux), mais ça n'empêche pas Mplayer de le lire parfaitement; par contre Totem (Gstreamer ou Xine) ne sait pas le lire.

      Sinon, y'a également moyen de faire des trucs pas très catholiques, comme encapsuler du MPEG1 dans un conteneur AVI, lequel ne pose pas de problème à Mplayer. Par contre, pour les autres...

      Attention, je ne dénigre absolument pas Mencoder, c'est un super outil (en compression MPEG2, j'arrive à obtenir des fichiers bien moins volumineux qu'avec FFmpeg pour le même débit), mais il faut savoir le prendre avec des pincettes et lire un peu la doc.

      Article Quarante-Deux : Toute personne dépassant un kilomètre de haut doit quitter le Tribunal. -- Le Roi de Cœur

  • # freeplayer

    Posté par  . Évalué à 1.

    En parlant de freeplayer, est-ce que quelqu'un aurait une configuration ou un lien à me donner pour faire fonctionner le freeplayer.

    J'ai voulu essayer hier, déjà chez free il est quasi impossible de trouver l'archive original. Il y a une redirection vers des sites « windows only ».

    J'ai trouvé une archive contenant le freeplayer, mais ma freebox (v5), n'affiche qu'une page noire. Quelqu'un aurai-t-il des informations ?
    • [^] # Re: freeplayer

      Posté par  . Évalué à 1.

      aptitude install freeplayer
      sur ubuntu bien sur. Moi ça fonctionne mais j'ai une freebox v4.
    • [^] # Re: freeplayer

      Posté par  . Évalué à 2.

      Il faut paramétrer ta freebox (via l'interface sur le site web de Free) pour qu'elle sache l'adresse IP de la machine freeplayer.

      Il vaut mieux que cette machine soit directement liée à la Freebox d'ailleurs (pas de routeur qui fait du masquerading).

      En suivant la documentation de Free, ça se fait assez facilement.

      BeOS le faisait il y a 20 ans !

    • [^] # Re: freeplayer

      Posté par  . Évalué à 1.

      Merci pour vos réponse.
      Je ne suis pas sous Ubuntu et j'ai configuré mon compte pour profiter du freeplayer. À prori j'aurai penser à un firmware trop récent par rapport à la distribution originale du freeplayer.

      Il semble que l'activité autour du freeplayer soit quasi éteinte. En tout cas les sites web référencent des projets morts, voir sont eux mêmes morts...

Suivre le flux des commentaires

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