Videostabilisierung unter Linux

Egal wie ruhig man ist: Auf großen Zoomstufen oder beim Bewegen verwackelt fast jedes Video. Professionelle Aufnahmegeräte bieten für diesen Zweck meist eine Stabilisierung in Kamera oder Objektiv, dies ist jedoch aufwändig und kostet entsprechend viel Geld. Besitzer von Consumergeräten müssen aber nicht ganz auf eine solche Stabilisierung verzichten: Viele Videoeditoren bieten entsprechende Bildfilter, welche (auf Kosten der Videoqualität) softwareseitig die Stabilisierung übernehmen. Als kostenlose Lösung ist vielen die entsprechende Funktion der Videoplatform YouTube bekannt, jedoch lässt sich diese nur auf komplette Videos anwenden und ist nicht konfigurierbar, zudem möchte man nicht jedes Video auf der zu Google gehörenden Platform bereitstellen. Leider sieht es unter Linux dünn aus – zwar kann man über wine die Lösung Virtualdub/Deshaker nutzen und der Editor KDEnlive bietet passende Filter im Menü, beide Lösungen lassen sich jedoch nur schwer automatisieren und leidet unter nervigen kleinen Bugs.

Bild: https://www.adlerweb.info/blog/wp-content/uploads/2013/05/kdenlivestab.png

Um nun bei mir das ganze zu erschlagen habe ich ein Script geschrieben, welches alles nötige übernimmt. Die eigentliche Stabilisierung steckt in der Software transcode, da diese jedoch mit vielen Codecs Probleme hat muss das Video entsprechend vorbereitet werden. Durch den Zwischenschritt als MPEG2 ist temporär ein vielfaches des ursprünglichen Speicherplatzes nötig, der sollte beim Umgang mit Videos ja ohnehin reichlich vorhanden sein. Das Ausgabeformat ist derzeit auf 8MBit/s x264 mit 128k MP3 eingestellt, der Stabilisierungsfilter läuft mit Standardwerten.

ffmpeg -i $1 -vcodec mpeg2video -b:v 10000k $1.mpg
ffmpeg -i $1 -acodec libmp3lame -b:a 128k $1.mp3
transcode -J stabilize -i $1.mpg -y null,null -o dummy
transcode -J transform -i $1.mpg -y xvid,pcm -w 10000k -o $1.stab.temp.mp4
ffmpeg -i $1.stab.temp.mp4 -i $1.mp3 -vcodec libx264 -acodec copy -b:v 8000k -map 0:0 -map 1:0 $1.stab.avi
rm $1.stab.temp.mp* $1.mp3 $1.mpg $1.*.trf

Voraussetzungen sind ffmpeg und transcode. Debian/Ubuntu liefern zum Teil statt ffmpeg dessen Fork avconf, in diesem Fall einfach im Script den Befehl anpassen.

http://www.youtube.com/watch?v=HMkRF2yz8M0

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.