Quicktime .mov: especifique una escala de tiempo de encabezado de película de 24000

Quicktime .mov: especifique una escala de tiempo de encabezado de película de 24000

Cuando ejecuto mis archivos Quicktime mov de 24 fps a través de una transcodificación FFmpeg, aparecen con una escala de tiempo de encabezado de película de 1000, cuando el archivo fuente tiene una escala de tiempo de 24000. Este valor de escala de tiempo bajo está causando problemas en algunas herramientas de software profesionales al buscar el archivo. .

En mi caso, el archivo fuente es un Quicktime con 1 pista de vídeo (DNx115) y 1 pista de datos (código de tiempo). Lo estoy transcodificando a DNx36.

Puedo forzar la escala de tiempo del video a 24000 agregando "-video_track_timescale 24000", pero esto no afecta nada más que la pista del video.

El comando es el siguiente:

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

Salida de consola sin cortes:

    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

Revisé el valor de la escala de tiempo en Atom Inspector y puedo ver claramente que mvhd (encabezado de película) se cambió a 1000 en output.mov cuando input.mov se configuró en 24000.

1000 no es claramente divisible por 24, por lo que la búsqueda resulta inexacta.

Al usar Atom Inspector para cambiar manualmente esta escala de tiempo del encabezado a 24000 y modificar los campos de duración a lo que deberían basarse en esta escala de tiempo, el archivo funciona como se esperaba.

¿Existe alguna forma de establecer el valor de escala de tiempo del encabezado de la película como una opción en FFmpeg?

Respuesta1

De acuerdo con el valor MOV_TIMESCALE en libavformat/movenc.h, esto está establecido en 1000. No estoy seguro de por qué se eligió este valor, ya que realmente no es un valor bueno/útil.

Envié un parche para cambiar esto a 600.

información relacionada