x264 – Finn Christiansen https://blogarchive.finnchristiansen.de Softwareentwickler mit einer Vorliebe für freie Software und GNU / Linux Sat, 08 Dec 2018 16:50:58 +0000 de-DE hourly 1 https://wordpress.org/?v=5.1.1 https://blogarchive.finnchristiansen.de/wp-content/uploads/2017/01/cropped-FinnsBlog512-32x32.png x264 – Finn Christiansen https://blogarchive.finnchristiansen.de 32 32 Videos in der Konsole mit ffmpeg konvertieren https://blogarchive.finnchristiansen.de/2018/02/11/videos-in-der-konsole-mit-ffmpeg-konvertieren/ https://blogarchive.finnchristiansen.de/2018/02/11/videos-in-der-konsole-mit-ffmpeg-konvertieren/#comments Sun, 11 Feb 2018 12:14:33 +0000 https://www.finnchristiansen.de/?p=315 Continue reading ]]> Die eigene Action Cam produziert wunderbare Videos in Full HD (1080p) mit 60 Bildern pro Sekunde (FPS). Die Videos sind scharf und flüssig, aber mit einer Bitrate von etwa 65 Mbit/s auch recht groß. Nextcloud hilft mir zwar, die Videos auch anderen zugänglich zu machen, aber direktes Streaming ist bei den meisten Internetanschlüssen nicht möglich. Für Freunde mit an­ti­quierten Internetanschlüssen stelle ich deshalb eine qualitativ reduzierte Version bereit, hierfür nutze ich ffmpeg.

Hier ist ein einfaches Beispiel, wie man mit ffmpeg ein Video in 720p mit 30 FPS konvertiert. Ausgehend von einer Full HD Auflösung (1920 x 1080 Pixel) ergibt sich dann eine Auflösung von 1280 x 720 Pixeln.

ffmpeg -i video.mp4 -vf scale=-1:720 -c:v libx264 -r 30 -crf 23 -preset fast -c:a copy video_720p30.mp4

Entscheidend für die Bitrate/Dateigröße und Qualität sind vor allem die Parameter

-crf
  und
-preset
, diese können bei Bedarf entsprechend angepasst werden. Eine Erklärung zum CRF Faktor findet man in Werner Robitzas Blog, übliche werte liegen zwischen 18 (kaum sichtbarer Qualitätsverlust) und 23 (Qualitätsverlust sichtbar, aber noch akzeptabel). Preset gibt an, wie viel Zeit sich ffmpeg für das Konvertieren nehmen darf. Je mehr Zeit man ffmpeg gewährt, desto besser fällt die Kompression und damit die Dateigröße aus. Weitere Informationen zum H.264 Encoding findet man im ffmpeg Wiki.

Außerdem soll das Video statt 60 FPS nur noch 30 FPS aufweisen, was mit 

-r 30
  erreicht wird. Der Unterschied fällt vielen nicht unbedingt auf, aber in Szenen mit rasanten Bewegungen sind 60 FPS deutlich von Vorteil.

Meine mit dieser Methode konvertierten Videos haben  je nach Ausgangsmaterial eine Bitrate von etwa 6 bis 14 Mbit/s, was meiner Meinung nach akzeptabel ist. Mit dem CRF Faktor wählt man nicht die gewünschte Bitrate, sondern die gewünschte Qualität. Die Bitrate variiert, weil sich das Video je nach Inhalt unterschiedlich gut komprimieren lässt.

Ich habe das ganze in ein kleines Script gepackt und bei Github veröffentlicht, hiermit kann ich schnell meine Videos konvertieren. Der Aufruf erfolgt unter Angabe der Eingabedatei, Auflösung und Bildrate:

./video_convert.sh video.mp4 720 30

]]>
https://blogarchive.finnchristiansen.de/2018/02/11/videos-in-der-konsole-mit-ffmpeg-konvertieren/feed/ 3