HandBrake CLI-Settings für DVD-Rips

Der Bequemlichkeit wegen konvertiere ich meine gekauften DVDs (ja tatsächlich, ich kaufe noch DVDs …) mit HandBrakeCLI in MPEG4-Dateien, welche einen x.264 Videostream sowie die AAC-Audio-Streams enthalten.

Da ich mir immer mal wieder die passenden Optionen für HandBrakeCLI in der Dokumention zusammensuchen musste, schreibe ich sie an dieser Stelle nieder, eventuell sind sie ja auch für die Allgemeinheit von Nutzen.

HandBrakeCLI \
--input '/pool/scratch/DVD.dvdmedia' \
--output '/pool/scratch/Movie.m4v' \
--format av_mp4 \
--title 3 \
--optimize \
--encoder x264 \
--encoder-tune film \
--encoder-level 3.1 \
--encoder-preset slow \
--two-pass \
--quality 18 \
--vfr \
--audio 1,2 \
--aname English,German \
--aencoder fdk_aac \
--ab 128 \
--markers

Anzupassen sind die Optionen --input und --output und --title. Je nach Wunsch und DVD müssen die Nummern --audio und Namen --aname der Audiotracks auch geändert werden. Das Command Line-Programm von Mediainfo hilft bei der Auswahl der passenden Audiotracks. Mit dem Wert für die Option --quality kann man auch etwas herumspielen, für mich passt 18 in den meisten Fällen; ein normaler 1,5 Stunden-Spielfilm mit zwei Tonspuren wird so etwa ein Gigabyte groß (mit dem Wert 20 geht die Größe herunter auf circa 700 Megabyte; die Werte hängen aber relativ stark vom Filmmaterial ab).

Introducing Final Cut Pro X on Vimeo

Introducing Final Cut Pro X on Vimeo

Mac-owning pals can tap into the complex art of editing with the power of Final Cut Pro X. In this Vimeo Video School series, we’ll walk you through Final Cut’s hefty video-editing toolset, from basic functions to advanced settings. We’ll cover:
  • Learning the interface
  • Importing your media
  • Analyzing your media
  • Managing your media
  • Understanding playback and skimming
  • Starting your edit
  • Working with markers
  • Editing audio
  • Editing video in the inspector
  • Editing audio in the inspector
  • Adding music and sound
  • Using transitions
  • Utilizing visual effects
  • Adding text
  • Working with stills
  • Exporting and uploading to Vimeo

Diese Serie von Screencasts kam mir sehr gelegen, als ich begonnen habe, mich mit Final Cut Pro X auseinanderzusetzen.

Gran Fondo: Einmal rund um West-Berlin

Am letzten Freitag bin ich zusammen mit dem @paulheyer einmal mit dem Fahrrad um West-Berlin herumgefahren. Da der sogenannte Berliner Mauerweg – wie sämtliche Infrastruktur in Berlin – alles andere als von guter Beschaffenheit ist, nahmen wir die geländegängigen Cyclocross-Bikes und starteten pünktlich um 10 Uhr am Brandenburger Tor. 170 Kilometer und ein paar Stunden später landeten wir auch wieder genau dort.

Nachfolgend ein fünfminütiger, hektischer Zeitraffer der gesamten Strecke, zusammengerechnet aus 6957 einzelnen Bildern:

Zusammen mit An- und Abfahrt von und nach Köpenick standen abends dann 209 Kilometer auf dem Tacho – immerhin meine längste Tour in diesem Jahr :-)

Neues Spielzeug ausprobiert: Night Timelapse mit der GoPro

Zuletzt hat eine GoPro Hero 4 Silver den Weg zu mir gefunden. Nach den anfänglichen Spielereien wie der (erstmaligen) Verfilmung des Sommerurlaubs, Montage an diversen Fahrrädern usw., schaute ich mir die Funktionen der GoPro noch einmal genauer an. Neben dem Aufzeichnen von Videos und dem Schießen von Fotos bietet die GoPro außerdem verschiedene „Timelapse“-Modi um Zeitraffer-Aufnahmen zu erstellen.

Als ich letztens zufällig außerhalb von Berlin übernachtete, stellte ich die GoPro in den Garten und richtete sie auf den Nachthimmel. Als Aufnahmemodus stellte ich „Night Timelapse“ ein. Die GoPro schießt dann fortlaufend Fotos mit der vorgewählten Belichtungszeit (hier: zehn Sekunden).

Die Bilder lassen sich dann z. B. mit ffmpeg, Time Lapse Assembler oder ähnlichen Tools am Rechner in ein Video verwandeln. Das sieht dann im Ergebnis so aus:

Moonrise Timelapse auf Vimeo.

Für den ersten Versuch bin ich recht zufrieden. Nächstes Mal bekommt die GoPro dann eine externe Stromversorgung, damit sie nicht wieder schlapp macht, wenn’s gerade spannend wird (wie hier beim Mondaufgang). Außerdem vertragen die Einzelbilder durchaus eine höhere Belichtungszeit um mehr vom Sternenhimmel sichtbar zu machen. Das nächste Experiment wird es zeigen.

FFmpeg beim Erstellen von Standbildern auf die Beine helfen

Um in einem Videoplayer Vorschaubilder beim Bewegen der Maus über die Zeitleiste anzuzeigen, erstellt man vom jeweiligen Video ausreichend viele Standbilder und gibt diese dem Videoplayer zeitcodiert mit.

Das Erstellen eines Standbildes kann mit FFmpeg (bzw. avconv unter debianoiden Linuxen) relativ einfach erledigt werden:

ffmpeg -y -i videofile.mp4 -ss 10 \
-f image2 -s 1280x720 -vframes 1 \
-threads auto -an screenshot.jpg

FFmpeg bekommt in diesem Beispiel mit mit dem Argument -ss 10 gesagt, im Video zum Zeitpunkt 10 Sekunden „vorzuspulen“ (im Sinne von „den ganzen Film decoden und an der entsprechenden Stelle anhalten“) und ein Standbild dieser Stelle abzuspeichern. Ist der Zeitpunkt nah am Anfang des Videos geht das recht schnell. Je weiter sich der Zeitpunkt vom Start entfernt, desto länger dauert der ganze Vorgang; wir reden hier von etlichen Sekunden schon bei relativ kurzen Videos von wenigen Minuten Länge. Wenn man jetzt z. B. 80 dieser Bilder aus einem Video benötigt, dauert das schnell mal an die 10 Minuten. Und wenn man dann nicht nur eins, sondern rund 30.000 Videos hat, wird’s schnell ungemütlich.

Zum Glück gibt es einen Trick, wie ich gestern gelernt habe: Fast-Seeking.

Hierbei springt FFmpeg an den dem Zeitstempel am nächsten liegenden Keyframe, von dort zum gewünschten Zeitstempel und erzeugt dann den Screenhot. Sehr praktisch und für den gegebenen Anwendungsfall absolut ausreichend.

ffmpeg -y -ss 10 -i videofile.mp4 \
-f image2 -s 1280x720 -vframes 1 \
-threads auto -an screenshot.jpg

Was hat sich im Befehl geändert? Lediglich die Position des Arguments -ss 10: Steht dieses vor dem Input-Argument (-i) aktiviert FFmpeg das Fast-Seeking. Wer möchte kann auch eine Kombination von Slow- und Fast-Seeking einsetzen (das nennt sich dann Combined Seeking), die Details kann man auf der Wiki-Seite nachlesen.

Damit war es möglich die Dauer für das Extrahieren der 80 Screenshots eines Videos von 10 Minuten auf 5 Sekunden zu reduzieren. Es liegen immerhin rund zwei Größenordnungen zwischen den Werten – damit sind dann auch 30.000 Videos durchaus in vertretbarer Zeit abzuarbeiten.