Quicktime .mov - Geben Sie eine Movie Header-Zeitskala von 24000 an

396
mwjb

Wenn ich meine 24-fps-Quicktime-Mov-Dateien durch einen FFmpeg-Transcode laufe, werden sie mit einer Movie-Header-Zeitskala von 1000 ausgegeben, wenn die Quelldatei eine Zeitskala von 24000 hat. Dieser niedrige Zeitskalenwert verursacht beim Suchen der Datei Probleme in einigen professionellen Softwaretools .

In meinem Fall ist die Quelldatei eine Quicktime mit 1 x Videospur (DNx115) und 1 x Datenspur (Timecode). Ich transcodiere es in DNx36.

Ich kann die Video-Zeitskala auf 24000 setzen, indem Sie "-video_track_timescale 24000" hinzufügen. Dies hat jedoch keine Auswirkungen auf die Videospur.

Der Befehl lautet wie folgt:

ffmpeg -i input.mov -c:v dnxhd -b:v 36M -pix_fmt yuv422p -video_track_timescale 24000 output.mov

Ungeschnittene Konsolenausgabe:

 ffmpeg version N-90214-gdd3f1e3a11-tessus Copyright (c) 2000-2018 the FFmpeg developers built with Apple LLVM version 9.0.0 (clang-900.0.39.2) configuration: --cc=/usr/bin/clang --prefix=/opt/ffmpeg --extra-version=tessus --enable-avisynth --enable-fontconfig --enable-gpl --enable-libass --enable-libbluray --enable-libfreetype --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopus --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-version3 --pkg-config-flags=--static --disable-ffplay libavutil 56. 8.100 / 56. 8.100 libavcodec 58. 13.102 / 58. 13.102 libavformat 58. 10.100 / 58. 10.100 libavdevice 58. 2.100 / 58. 2.100 libavfilter 7. 12.100 / 7. 12.100 libswscale 5. 0.102 / 5. 0.102 libswresample 3. 0.101 / 3. 0.101 libpostproc 55. 0.100 / 55. 0.100 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'input.mov': Metadata: major_brand : qt  minor_version : 537199360 compatible_brands: qt  creation_time : 2018-03-06T10:45:16.000000Z timecode : 01:14:25:22 Duration: 00:00:30.00, start: 0.000000, bitrate: 116392 kb/s Stream #0:0(eng): Video: dnxhd (DNXHD) (AVdn / 0x6E645641), yuv422p(tv, bt709), 1920x1080, 116391 kb/s, SAR 1:1 DAR 16:9, 24 fps, 24 tbr, 24k tbn, 24k tbc (default) Metadata: creation_time : 2018-03-06T10:45:16.000000Z handler_name : Apple Alias Data Handler encoder : Avid DNxHD Codec Stream #0:1(eng): Data: none (tmcd / 0x64636D74), 0 kb/s (default) Metadata: creation_time : 2018-03-06T10:45:20.000000Z handler_name : Apple Alias Data Handler timecode : 01:14:25:22 Stream mapping: Stream #0:0 -> #0:0 (dnxhd (native) -> dnxhd (native)) Press [q] to stop, [?] for help Output #0, mov, to 'output.mov': Metadata: major_brand : qt  minor_version : 537199360 compatible_brands: qt  timecode : 01:14:25:22 encoder : Lavf58.10.100 Stream #0:0(eng): Video: dnxhd (DNXHD) (AVdn / 0x6E645641), yuv422p, 1920x1080 [SAR 1:1 DAR 16:9], q=2-1024, 36000 kb/s, 0.04 fps, 24k tbn, 24 tbc (default) Metadata: creation_time : 2018-03-06T10:45:16.000000Z handler_name : Apple Alias Data Handler encoder : Lavc58.13.102 dnxhd frame= 720 fps=151 q=4.0 Lsize= 132482kB time=00:00:29.95 bitrate=36226.7kbits/s speed=6.28x 

Ich habe den Zeitskalenwert in Atom Inspector überprüft und kann deutlich sehen, dass der mvhd (Movie Header) in output.mov auf 1000 geändert wurde, als input.mov auf 24000 gesetzt wurde.

1000 ist nicht sauber durch 24 teilbar, daher ungenaues Suchen.

Wenn Sie Atom Inspector verwenden, um diese Header-Zeitskala manuell in 24000 zu ändern und die Dauerfelder so zu ändern, wie sie auf dieser Zeitskala basieren sollen, funktioniert die Datei wie erwartet.

Gibt es trotzdem einen Zeitskalenwert für den Movie Header als Option in FFmpeg?

1
Ich baute ffmpeg aus dem neuesten Git auf und änderte MOV_TIMESCALE in 600 (was eigentlich die Quicktime-Spezifikation ist) und testete meinen Workflow erneut. Dies behebte das Problem. Es scheint also, dass der Wert von 1000, auf den das ffmpeg-Projekt festgelegt ist, das Problem ist. mwjb vor 6 Jahren 0
Es lohnt sich, dies als Antwort zu veröffentlichen, und Sie können auch erwähnen, dass auch ein Patch eingereicht wurde! bertieb vor 6 Jahren 0
Es ist das erste Mal, dass ich einen FFmpeg-Patch eingereicht habe, und es ist sehr wahrscheinlich, dass meine neue Einreichung zurückgewiesen wird, weil sie nicht auf die richtige Art und Weise präsentiert wird, wie es der erste war. Wenn es erfolgreich ist, werde ich hier sicherlich aktualisieren. mwjb vor 6 Jahren 0

1 Antwort auf die Frage

0
mwjb

Entsprechend dem MOV_TIMESCALE-Wert in libavformat / movenc.h ist dieser Wert auf 1000 festgelegt. Nicht sicher, warum er als wirklich nicht guter / nützlicher Wert gewählt wurde.

Ich habe einen Patch eingereicht, um diese auf 600 zu ändern.