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.
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?
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.