Videos mit variabler Bildrate

Aus Colliseum
Zur Navigation springen Zur Suche springen

Die Stapelverarbeitungsdatei, die den Zeitstempel mittel FFmpeg ins Video schreibt, besteht aus einer einzigen Zeile:

 "%ProgramFiles%\FFmpeg\bin\ffmpeg" -y -i %1 -vf "drawtext=fontsize=h/8:fontcolor=white:x=0.1*tw:y=h*0.5-th:text='%%{eif\:1K*t-878\:d\:04} ms'" "%~dpn1_tc%~x1"
  • "%ProgramFiles%\FFmpeg\bin\ffmpeg" spezifiziert den genauen Pfad zu FFmpeg, damit genau diese Version gestartet wird (und nicht irgendeine andere, die sich in einem der vorgegebenen Pfade finden lässt)
  • -y überschreibt das Ausgabevideo ohne Rückfrage, falls es schon vorhanden ist
  • -i %1 Eingabevideo wird als Parameter an das Skript übergeben
  • -vf "drawtext ... erledigt die eigentliche Arbeit
  • fontsize=h/8:fontcolor=white weiße Schrift, ein Achtel der Bildhöhe h groß
  • x=0.1*tw:y=h*0.5-th x-Position ein Zehntel der Textlaufweite tw vom linken Bildrand entfernt, y-Position auf halber Bildhöhe h - Texthöhe th
  • text='%%{eif\:1K*t-878\:d\:04} ms' Das Tausendfache 1K des Zeitstempels t (in µs) als Ganzzahl eif mit vier Stellen \:d\:4 und dem Anhängsel ms als Text formatieren. Die 878 ist ein willkürlicher Offset, der die Zeitanzeige zu Beginn des interessierenden Intervals nullt.
  • "%~dpn1_tc%~x1" Name der Ausgabedatei = Eingabedatei mit Anhängsel _tc für »timecode«

Mit der letzten Angabe wird das Containerformat, z. B. mp4 oder mov, für die Ausgabedatei übernommen. Audio- und Videocodec werden, da nicht weiter spezifiziert, automatisch gewählt. Für das Video bedeutet dies bei diesen Containertypen AVC (H.264).

Hier eine Datei (Matroska Video-Container), um das Skript zu testen:

AVIdemux als Alternative

Das freie Programm AVIdemux ist eines der wenigen Programme, die vfr-Video halbwegs korrekt behandeln. AVIdemux verfügt über einige rudimentäre Filter, u.a. über einen, der die Bildnummer und den Zeitstempel (presentation time stamp) in Bild einbrennt:

<html5media>File:80_80_40.mp4</html5media>