Quicktime .mov - Geben Sie eine Zeitskala für den Filmheader von 24000 an

Quicktime .mov - Geben Sie eine Zeitskala für den Filmheader von 24000 an

Wenn ich meine Quicktime-MOV-Dateien mit 24 Bildern pro Sekunde durch eine FFmpeg-Transkodierung laufen lasse, erhalten sie eine Movie-Header-Zeitskala von 1000, während die Quelldatei eine Zeitskala von 24000 hat. Dieser niedrige Zeitskalenwert verursacht bei der Suche nach der Datei in einigen professionellen Softwaretools Probleme.

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

Ich kann die Videozeitskala auf 24000 erzwingen, indem ich „-video_track_timescale 24000“ hinzufüge, aber dies wirkt sich nur auf die Videospur aus.

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 im Atom Inspector geprüft und kann deutlich sehen, dass mvhd (Movie Header) in output.mov auf 1000 geändert wird, während input.mov auf 24000 eingestellt war.

1000 ist nicht sauber durch 24 teilbar, was zu ungenauen Suchvorgängen führt.

Wenn Sie diese Header-Zeitskala mithilfe von Atom Inspector manuell auf 24.000 ändern und die Dauerfelder basierend auf dieser Zeitskala auf die gewünschten Werte ändern, funktioniert die Datei wie erwartet.

Gibt es eine Möglichkeit, den Zeitskalenwert des Filmheaders als Option in FFmpeg festzulegen?

Antwort1

Gemäß dem MOV_TIMESCALE-Wert in libavformat/movenc.h ist dies fest auf 1000 eingestellt. Ich bin nicht sicher, warum dies gewählt wurde, da es wirklich kein guter/nützlicher Wert ist.

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

verwandte Informationen