Outils pour utilisateurs

Outils du site


documentation:multimedia:gstreamer

GStreamer

GStreamer est un framework multimédia capable de manipuler des flux audio, vidéo, des images, etc.

Il utilise un système de plugins pour implémenter les différents codecs, et une des particularités, les différents éléments de la chaîne de traitement sont connectés les uns aux autres par un système de pipe.

Aperçu

Cette section va résumer les commandes essentielles que l'on peut utiliser avec un fichier multimédia (audio, vidéo, etc.).

Pour connaître la topologie d'un fichier multimédia, c'est à dire le type de conteneur, les codecs utilisés, on emploie la commande gst-discover-1.0.

Si l'on souhaite savoir si un codec est présent sur le système, on utilise la commande gst-inspect-1.0.

Voici par exmple en ce qui concerne le format sonore Vorbis :

gst-inspect-1.0 | grep vorbis                    
rtp:  rtpvorbispay: RTP Vorbis payloader
rtp:  rtpvorbisdepay: RTP Vorbis depayloader
typefindfunctions: audio/x-vorbis: no extensions
vorbis:  vorbistag: VorbisTag
vorbis:  vorbisparse: VorbisParse
vorbis:  vorbisdec: Vorbis audio decoder
vorbis:  vorbisenc: Vorbis audio encoder

La commande gst-launch-1.0 est quant à elle destinée au traitement.

Convertir un fichier audio

Les exemples ci-dessous montrent comment « transcoder » un fichier audio vers du MP3 (encodé en VBR variable bitrate).

vorbis → mp3

Si le format conteneur est Ogg :

gst-launch-1.0 filesrc location=....ogg ! oggdemux ! vorbisdec ! audioconvert ! audioresample ! lamemp3enc target=quality quality=0 ! filesink location=....mp3

Si le fichier original contient des méta-données (titre de la chanson, titre de l'album, etc.), on peut utiliser l'élément id3v2mux.

gst-launch-1.0 filesrc location=....ogg ! oggdemux ! vorbisdec ! audioconvert ! audioresample ! lamemp3enc target=quality quality=0 ! id3v2mux ! filesink location=....mp3

opus → mp3

Si le format conteneur est Matroska :

gst-launch-1.0 filesrc location=....webm ! matroskademux ! opusdec ! audioconvert ! lamemp3enc target=quality quality=0 ! filesink location=....mp3

AAC → mp3

Si le format conteneur est MP4 (QuickTime) :

gst-launch-1.0 filesrc location=....mp4 ! qtdemux ! faad ! audioconvert ! lamemp3enc target=quality quality=0 ! filesink location=....mp3

FLAC → mp3

gst-launch-1.0 filesrc location=....flac ! flacparse ! flacdec ! audioconvert ! audioresample ! lamemp3enc target=quality quality=0 ! filesink location=....mp3

Extraire une piste audio (à partir d'une vidéo)

Dans cette section nous allons voir comment extraire une piste audio à partir d'une vidéo. Une vidéo est constituée de deux flux :

  • la partie vidéo
  • la partie audio

Les deux flux sont situés dans un conteneur.

H.264 (codec vidéo), AAC (codec audio) → mp3

Si le conteneur est MP4 (QuickTime) :

gst-launch-1.0 filesrc location=....mp4 ! qtdemux name=demux demux.audio_0 ! queue ! faad ! audioconvert ! lamemp3enc target=bitrate cbr=true bitrate=192 ! filesink location=....mp3

Lire un fichier audio

Le moyen le plus simple, consiste à utiliser le plugin uridecodebin3 (ou uridecodebin) :

gst-launch-1.0 uridecodebin3 uri=... ! audioconvert ! autoaudiosink
documentation/multimedia/gstreamer.txt · Dernière modification: le 11-12-2020 à 17h17 de olivier