
Normalerweise verwende ich Adobe Premiere, wenn ich die Bildrate ändere, und interpretiere das Videomaterial als neue Bildrate, sodass sich die Dauer ändert. Das ist in Ordnung. Aber da es sich hier um eine MKV-Datei handelt, die ich konvertieren wollte, verwende ich ffmpeg.
Aber ich habe ein seltsames Problem mit ffmpeg beim Hinzufügen von Timecode.
Der Code, den ich verwende, sieht folgendermaßen aus:
/Applications/ffmpeg -probesize 50M -analyzeduration 100M -i "$f" -map 0:0 -map 0:1 -c:a pcm_s24le -async 1 -c:v dnxhd -b:v 36000k -r 25 -s 1920x1080 -aspect 16:9 -pix_fmt yuv422p -coder ac -trellis 0 -colorspace bt709 -color_range mpeg -subq 6 -me_range 16 -sc_threshold 40 -keyint_min 25 -g 50 -metadata creation_time=now -af atempo=1/0.95904 -vf setpts="0.95904*PTS" -vf drawtext="fontsize=30:fontfile=/library/fonts/tahoma.ttf: timecode='01\:00\:00\:00': r=25: x=main_w-180: y=30: fontcolor=white@1: box=1: boxcolor=0x00000000@1" -sn -y "/Volumes/videos/$FILENAME.mov"
Das erstellte Video ist ca. 42min lang.
Wenn ich das Video ohne Drawtext rendern:
/Applications/ffmpeg -probesize 50M -analyzeduration 100M -i "$f" -map 0:0 -map 0:1 -c:a pcm_s24le -async 1 -c:v dnxhd -b:v 36000k -r 25 -s 1920x1080 -aspect 16:9 -pix_fmt yuv422p -coder ac -trellis 0 -colorspace bt709 -color_range mpeg -subq 6 -me_range 16 -sc_threshold 40 -keyint_min 25 -g 50 -metadata creation_time=now -af atempo=1/0.95904 -vf setpts="0.95904*PTS" -sn -y "/Volumes/videos/$FILENAME.mov"
Dann beträgt die gerenderte Videodauer 40 Min. 59 Sek. Das ist die Dauer, die ich wollte, und sie ist dieselbe, die Adobe erstellt.
Warum ist die Videodauer mit ins Bild eingezeichnetem Timecode länger als ohne?
Wie kann ich das MKV bitte richtig mit ffmpeg in ein DNxHD mit 25 fps und eingebranntem Zeitcode konvertieren?
Antwort1
In Ihrem Protokoll steht:
Multiple -filter, -af or -vf options specified for stream 0, only the last option '-filter:v drawtext' will be used.
Das bedeutet, dass Ihre Einstellungen ignoriert werden und die Dauer daher länger ist.
Verwenden Sie nur eine -vf
oder -filter_complex
sowohl für die Audio- als auch für die Videofilterung:
/Applications/ffmpeg -probesize 50M -analyzeduration 100M -i "$f" -map 0:0 -map 0:1 -c:a pcm_s24le -async 1 -c:v dnxhd -b:v 36000k -r 25 -s 1920x1080 -aspect 16:9 -pix_fmt yuv422p -coder ac -trellis 0 -colorspace bt709 -color_range mpeg -subq 6 -me_range 16 -sc_threshold 40 -keyint_min 25 -g 50 -metadata creation_time=now -af atempo=1/0.95904 -vf setpts="0.95904*PTS,drawtext=fontsize=30:fontfile=/library/fonts/tahoma.ttf: timecode='01:00:00:00': r=25: x=main_w-180: y=30: fontcolor=white@1: box=1: boxcolor=0x00000000@1" -sn -y "/Volumes/videos/$FILENAME.mov"
- Möglicherweise müssen Sie zu
timecode='01:00:00:00'
wechselntimecode='01\:00\:00\:00'
. - SehenFiltern – Einführung.