This is an old revision of the document!
Videos umwandeln mit dem GStreamer Framework
GStreamer?
GStreamer ist ein Video-Framework, das eigentlich Anwendungsentwicklern helfen soll, mit Multimediaformaten umzugehen. Mithilfe von gst-launch kann man aber das in viele Plugins zerlegte Framework auch so nutzen. Jedes Plugin hat eine/mehrere “source” und einen/meherere “sink”. So kann man die ganzen Plugins in eine Kette hängen, angefangen vom lesen einer Datei, über das umwandeln des Videos und dem Muxen über das speichern in eine Datei
Installation
Sollte auf den meisten Linux-Distributionen über die gst-plugins-[good,bad,ugly] (oder ähnlich) Pakete gehn. OS X hat bestimmt irgendnen Port. Windows?
Informationen über Plugins
gst-inspect
Alleine aufgerufen listet die installierten Plugins auf. Mag man z.B wissen was das “vorbisenc” denn alles verwursten kann, gibt man
gst-inspect vorbisenc
ein.
Beispiele
Umwandeln von nem haufen PNG-Bildern und ner FLAC-Tonspur in ein WebM Video
gst-launch-0.10 webmmux name="mux" ! filesink location=test.ivf . multifilesrc location="/home/brot/sintel_trailer-720/sintel_trailer_2k_%04d.png" index="1" caps="image/png,framerate=24/1" ! pngdec ! ffmpegcolorspace ! video/x-raw-yuv,format=\(fourcc\)I420 ! vp8enc threads=2 quality=8 speed=0 max-latency=25 mode=vbr ! multiqueue ! mux. filesrc location="/home/brot/sintel_trailer-720/sintel_trailer-audio.flac" ! flacdec ! audioconvert ! vorbisenc quality=0.25 ! mux.
Anmerkung: der “.” trennt mehrere Pipelines auf. Am Anfang wird der filesink definiert, mit dem namen “mux”. Danach kommt die Video- und die Ton-Pipeline, die beide mit “mux.” aufhören, was den Stream durch den webmmuxer in den filesink leitet.
Ablage ;)
gst-launch-0.10 filesrc location=/home/brot/fu.mkv ! matroskademux ! dtsdec ! audiorate ! audioconvert ! audio/x-raw-int,channels=6 ! flacenc ! filesink location=out.flac
gst-launch-0.10 multifilesrc location=big_buck_bunny_%05d.png index=1 caps=”image/png,framerate=24/1″ ! pngdec ! ffmpegcolorspace ! jpegenc quality=100 ! queue ! mux. filesrc location=../BigBuckBunny-stereo.flac ! flacdec ! audioconvert ! audioresample ! queue ! mux. avimux name=mux ! filesink location=input226_mjpeg.avi