Los códigos de tiempo ffmpeg agregados no coinciden con los que puedo leer en Premiere

Usé este comando para grabar dentro de mi video el código de tiempo.

Si bien todo se veía bien, cuando abro mi video dentro de Premiere, parece que mi código de tiempo no coincide.

¡El código de tiempo no coincide!

Mi temor es que el código de tiempo procesado por ffmpeg fuera el original del archivo de entrada, pero cuando se volvió a comprimir a través de h264, la cantidad de cuadros cambió dando prioridad a los algoritmos de compresión h264.

¿Cómo puedo arreglarlo? O mejor, ¿cómo puedo tener un video de salida que coincida exactamente con la duración y los cuadros del archivo de entrada original?

Lamentablemente, mi archivo de entrada ya era una transmisión h264 mp4.

El comando que utilicé es el siguiente:

ffmpeg -i "file.mp4" -c:v libx264 -x264-params "crf=17" -preset fast -c:a copy -c:s copy -copyinkf -filter_complex "drawtext=fontfile=font.otf: timecode='00\:00\:00\:00':rate=24: text='': fontsize=56: fontcolor=white@0.9: borderw=3: bordercolor=black: x=50-text_w/2:y=50" "file2.mp4"

La salida completa de la consola es la siguiente:

ffmpeg version N-82500-g52da3f6 Copyright (c) 2000-2016 the FFmpeg developers
  built with gcc 4.9.3 (GCC)
  configuration: --arch=x86_64 --target-os=mingw32 --cross-prefix=/root/opt/ffmpeg-cross-compile/sandbox/cross_compilers/mingw-w64-x86_64/bin/x86_64-w64-mingw32- --pkg-config=pkg-config --disable-w32t
hreads --enable-libsoxr --enable-fontconfig --enable-libass --enable-libbluray --enable-iconv --enable-libtwolame --extra-cflags=-DLIBTWOLAME_STATIC --enable-libzvbi --enable-libcaca --enable-libmodpl
ug --extra-libs=-lstdc++ --extra-libs=-lpng --enable-decklink --extra-libs=-loleaut32 --enable-libmp3lame --enable-version3 --enable-zlib --enable-librtmp --enable-libvorbis --enable-libtheora --enabl
e-libspeex --enable-libopenjpeg --enable-gnutls --enable-libgsm --enable-libfreetype --enable-libopus --enable-bzlib --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libvo-amrwbenc --ena
ble-libschroedinger --enable-libvpx --enable-libilbc --enable-libwavpack --enable-libwebp --enable-libgme --enable-dxva2 --enable-avisynth --enable-gray --enable-libopenh264 --enable-netcdf --enable-l
ibflite --enable-lzma --enable-libsnappy --enable-libzimg --enable-gpl --enable-libx264 --enable-libx265 --enable-frei0r --enable-filter=frei0r --enable-librubberband --enable-libvidstab --enable-libx
avs --enable-libxvid --enable-libmfx --extra-libs=-lpsapi --extra-libs=-lspeexdsp --extra-cflags='-mtune=core2' --extra-cflags=-O3 --enable-static --disable-shared --prefix=/root/opt/ffmpeg-cross-comp
ile/sandbox/cross_compilers/mingw-w64-x86_64/x86_64-w64-mingw32 --enable-nonfree --enable-libfdk-aac --enable-runtime-cpudetect
  libavutil      55. 40.100 / 55. 40.100
  libavcodec     57. 66.103 / 57. 66.103
  libavformat    57. 57.100 / 57. 57.100
  libavdevice    57.  2.100 / 57.  2.100
  libavfilter     6. 67.100 /  6. 67.100
  libswscale      4.  3.101 /  4.  3.101
  libswresample   2.  4.100 /  2.  4.100
  libpostproc    54.  2.100 / 54.  2.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'file.mp4':
  Metadata:
    major_brand     : iso5
    minor_version   : 512
    compatible_brands: iso6mp41
  Duration: 00:51:27.38, start: 0.000000, bitrate: 3246 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 2988 kb/s, 24 fps, 24 tbr, 12288 tbn, 48 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 256 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
[libx264 @ 0000000003746020] using SAR=1/1
[libx264 @ 0000000003746020] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX
[libx264 @ 0000000003746020] profile High, level 4.0
[libx264 @ 0000000003746020] 264 - core 148 r2708 86b7198 - H.264/MPEG-4 AVC codec - Copyleft 2003-2016 - http://www.videolan.org/x264.html - options: cabac=1 ref=2 deblock=1:0:0 analyse=0x3:0x113 me=
hex subme=6 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=12 lookahead_threads=2 sliced_threads=0 nr=0 dec
imate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=1 keyint=250 keyint_min=24 scenecut=40 intra_refresh=0 rc_lookah
ead=30 rc=crf mbtree=1 crf=17.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to 'file2.mp4':
  Metadata:
    major_brand     : iso5
    minor_version   : 512
    compatible_brands: iso6mp41
    encoder         : Lavf57.57.100
    Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], q=-1--1, 24 fps, 12288 tbn, 24 tbc (default)
    Metadata:
      encoder         : Lavc57.66.103 libx264
    Side data:
      cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
    Stream #0:1(und): Audio: aac (LC) ([64][0][0][0] / 0x0040), 48000 Hz, stereo, fltp, 256 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
Stream mapping:
  Stream #0:0 (h264) -> drawtext
  drawtext -> Stream #0:0 (libx264)
  Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
frame= 2105 fps= 36 q=-1.0 Lsize=   41555kB time=00:01:27.58 bitrate=3886.8kbits/s dup=2 drop=0 speed=1.49x
video:38775kB audio:2719kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.145290%
[libx264 @ 0000000003746020] frame I:11    Avg QP: 7.99  size: 70608
[libx264 @ 0000000003746020] frame P:761   Avg QP:13.37  size: 28331
[libx264 @ 0000000003746020] frame B:1333  Avg QP:14.85  size: 13030
[libx264 @ 0000000003746020] consecutive B-frames:  2.0% 40.1%  1.9% 56.1%
[libx264 @ 0000000003746020] mb I  I16..4: 49.6% 36.9% 13.5%
[libx264 @ 0000000003746020] mb P  I16..4:  9.6% 15.5%  2.1%  P16..4: 20.5%  7.4%  3.1%  0.0%  0.0%    skip:41.8%
[libx264 @ 0000000003746020] mb B  I16..4:  2.5%  3.7%  0.4%  B16..8: 17.6%  7.0%  0.8%  direct: 7.7%  skip:60.4%  L0:50.5% L1:44.4% BI: 5.1%
[libx264 @ 0000000003746020] 8x8 transform intra:56.0% inter:56.8%
[libx264 @ 0000000003746020] coded y,uvDC,uvAC intra: 37.2% 61.9% 19.6% inter: 6.6% 19.9% 0.8%
[libx264 @ 0000000003746020] i16 v,h,dc,p: 51% 24% 14% 10%
[libx264 @ 0000000003746020] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 36% 18% 29%  3%  3%  3%  2%  3%  3%
[libx264 @ 0000000003746020] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 39% 23% 15%  4%  4%  4%  3%  4%  3%
[libx264 @ 0000000003746020] i8c dc,h,v,p: 45% 18% 29%  7%
[libx264 @ 0000000003746020] Weighted P-Frames: Y:5.8% UV:3.0%
[libx264 @ 0000000003746020] ref P L0: 77.3% 22.7%
[libx264 @ 0000000003746020] ref B L0: 87.0% 13.0%
[libx264 @ 0000000003746020] ref B L1: 97.2%  2.8%
[libx264 @ 0000000003746020] kb/s:3621.54

Lo volví a ejecutar para obtener la salida y lo cerré después de unos segundos con la opción [q];)

EDITAR: se volvió a ejecutar manteniendo solo el video.

ffmpeg version N-82500-g52da3f6 Copyright (c) 2000-2016 the FFmpeg developers
  built with gcc 4.9.3 (GCC)
  configuration: --arch=x86_64 --target-os=mingw32 --cross-prefix=/root/opt/ffmpeg-cross-compile/sandbox/cross_compilers/mingw-w64-x86_64/bin/x86_64-w64-mingw32- --pkg-config=pkg-config --disable-w32t
hreads --enable-libsoxr --enable-fontconfig --enable-libass --enable-libbluray --enable-iconv --enable-libtwolame --extra-cflags=-DLIBTWOLAME_STATIC --enable-libzvbi --enable-libcaca --enable-libmodpl
ug --extra-libs=-lstdc++ --extra-libs=-lpng --enable-decklink --extra-libs=-loleaut32 --enable-libmp3lame --enable-version3 --enable-zlib --enable-librtmp --enable-libvorbis --enable-libtheora --enabl
e-libspeex --enable-libopenjpeg --enable-gnutls --enable-libgsm --enable-libfreetype --enable-libopus --enable-bzlib --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libvo-amrwbenc --ena
ble-libschroedinger --enable-libvpx --enable-libilbc --enable-libwavpack --enable-libwebp --enable-libgme --enable-dxva2 --enable-avisynth --enable-gray --enable-libopenh264 --enable-netcdf --enable-l
ibflite --enable-lzma --enable-libsnappy --enable-libzimg --enable-gpl --enable-libx264 --enable-libx265 --enable-frei0r --enable-filter=frei0r --enable-librubberband --enable-libvidstab --enable-libx
avs --enable-libxvid --enable-libmfx --extra-libs=-lpsapi --extra-libs=-lspeexdsp --extra-cflags='-mtune=core2' --extra-cflags=-O3 --enable-static --disable-shared --prefix=/root/opt/ffmpeg-cross-comp
ile/sandbox/cross_compilers/mingw-w64-x86_64/x86_64-w64-mingw32 --enable-nonfree --enable-libfdk-aac --enable-runtime-cpudetect
  libavutil      55. 40.100 / 55. 40.100
  libavcodec     57. 66.103 / 57. 66.103
  libavformat    57. 57.100 / 57. 57.100
  libavdevice    57.  2.100 / 57.  2.100
  libavfilter     6. 67.100 /  6. 67.100
  libswscale      4.  3.101 /  4.  3.101
  libswresample   2.  4.100 /  2.  4.100
  libpostproc    54.  2.100 / 54.  2.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'file.mp4':
  Metadata:
    major_brand     : iso5
    minor_version   : 512
    compatible_brands: iso6mp41
  Duration: 00:51:27.38, start: 0.000000, bitrate: 3246 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 2988 kb/s, 24 fps, 24 tbr, 12288 tbn, 48 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 256 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
[libx264 @ 000000000315f7c0] using SAR=1/1
[libx264 @ 000000000315f7c0] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX
[libx264 @ 000000000315f7c0] profile High, level 4.0
[libx264 @ 000000000315f7c0] 264 - core 148 r2708 86b7198 - H.264/MPEG-4 AVC codec - Copyleft 2003-2016 - http://www.videolan.org/x264.html - options: cabac=1 ref=2 deblock=1:0:0 analyse=0x3:0x113 me=
hex subme=6 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=12 lookahead_threads=2 sliced_threads=0 nr=0 dec
imate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=1 keyint=250 keyint_min=24 scenecut=40 intra_refresh=0 rc_lookah
ead=30 rc=crf mbtree=1 crf=17.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00
Output #0, mp4, to 'file2.mp4':
  Metadata:
    major_brand     : iso5
    minor_version   : 512
    compatible_brands: iso6mp41
    encoder         : Lavf57.57.100
    Stream #0:0: Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], q=-1--1, 24 fps, 12288 tbn, 24 tbc (default)
    Metadata:
      encoder         : Lavc57.66.103 libx264
    Side data:
      cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
Stream mapping:
  Stream #0:0 (h264) -> drawtext
  drawtext -> Stream #0:0 (libx264)
Press [q] to stop, [?] for help
frame=  843 fps= 36 q=-1.0 Lsize=   10386kB time=00:00:35.00 bitrate=2430.9kbits/s dup=2 drop=0 speed= 1.5x
video:10375kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.103293%
[libx264 @ 000000000315f7c0] frame I:4     Avg QP: 5.49  size: 41664
[libx264 @ 000000000315f7c0] frame P:285   Avg QP:12.19  size: 19489
[libx264 @ 000000000315f7c0] frame B:554   Avg QP:13.02  size:  8849
[libx264 @ 000000000315f7c0] consecutive B-frames:  2.6% 28.7%  1.8% 66.9%
[libx264 @ 000000000315f7c0] mb I  I16..4: 65.5% 27.6%  6.9%
[libx264 @ 000000000315f7c0] mb P  I16..4:  9.0% 11.3%  1.3%  P16..4: 15.5%  5.1%  2.2%  0.0%  0.0%    skip:55.6%
[libx264 @ 000000000315f7c0] mb B  I16..4:  2.4%  2.2%  0.1%  B16..8: 11.6%  4.9%  0.6%  direct: 7.1%  skip:71.0%  L0:50.3% L1:45.1% BI: 4.6%
[libx264 @ 000000000315f7c0] 8x8 transform intra:49.4% inter:53.5%
[libx264 @ 000000000315f7c0] coded y,uvDC,uvAC intra: 26.0% 54.6% 16.0% inter: 4.1% 16.1% 0.6%
[libx264 @ 000000000315f7c0] i16 v,h,dc,p: 52% 26% 14%  8%
[libx264 @ 000000000315f7c0] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 31% 22% 38%  1%  1%  1%  2%  1%  2%
[libx264 @ 000000000315f7c0] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 38% 28% 20%  2%  3%  3%  3%  2%  2%
[libx264 @ 000000000315f7c0] i8c dc,h,v,p: 49% 19% 26%  7%
[libx264 @ 000000000315f7c0] Weighted P-Frames: Y:15.4% UV:8.1%
[libx264 @ 000000000315f7c0] ref P L0: 71.5% 28.5%
[libx264 @ 000000000315f7c0] ref B L0: 84.7% 15.3%
[libx264 @ 000000000315f7c0] ref B L1: 96.2%  3.8%
[libx264 @ 000000000315f7c0] kb/s:2419.57

Esta es la información de los medios que obtuve:


ID de video : 1
Formato: AVC
Formato/Info: Códec de video avanzado
Perfil de formato: Configuración de formato High@L4
, CABAC: Sí
Configuración de formato, ReFrames: 2 cuadros ID de
códec: avc1
ID/Info de códec: Codificación de video avanzada
Duración: 50s 0ms
Bit : 2 991 Kbps
Ancho : 1 920 píxeles
Altura : 1 080 píxeles
Relación de aspecto de la pantalla : 16:9
Modo de velocidad de fotogramas : Variable Velocidad de
fotogramas : 23 976 (23 976/1000) fps
Velocidad de fotogramas mínima : 12 000 fps
Velocidad de fotogramas máxima : 24 000 fps
Color espacio : YUV
Chroma submuestreo : 4:2:0
Profundidad de bits : 8 bits
Tipo de escaneo :
Bits progresivos/(Pixel*Frame) : 0.060
Tamaño de transmisión: 17,8 MiB (100 %)
Biblioteca de escritura: x264 core 148 r2708 86b7198
Configuración de codificación: cabac=1 / ref=2 / deblock=1:0:0 / analyse=0x3:0x113 / me=hex / subme=6 / psy=1 / psy_rd=1.00:0.00 / mixed_ref=1 / me_range=16 / chroma_me=1 / trellis=1 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=-2 / threads =12 / lookahead_threads=2 / sliced_threads=0 / nr=0 / diezmar=1 / entrelazado=0 / bluray_compat=0 / constrained_intra=0 / bframes=3 / b_pyramid=0 / b_adapt=1 / b_bias=0 / direct=1 /weightb=1 / open_gop=0 / weightp=1 / keyint=250 / keyint_min=24 / scenecut=40 / intra_refresh=0 / rc_lookahead=30 / rc=crf / mbtree=1 / crf=17.0 / qcomp=0.60 / qpmin =0 / qpmax=69 / qpstep=4 / ip_ratio=1.40 / aq=1:1.00

Muestra la salida de la consola completa.
@Mulvya hecho :)
La salida de la consola muestra solo dos fotogramas duplicados. Pero la salida es solo 1m27s mientras que la fuente es 51m. Por lo tanto, si hay más fotogramas caídos, esta salida de consola no lo revelará. ¿Premiere en la marca de 1m27s muestra una diferencia de 2 cuadros?
@Mulvya, lo siento, me di cuenta de que creé una secuencia incorrecta en Premiere con un fps de 23.297 en lugar de 24. Si creo una secuencia de 24 fps, de hecho, solo tengo 2 fotogramas apagados. ¿Cómo puedo deshacerme de estos 2 o más cuadros duplicados? ¿Mi comando es bueno o tengo que escribirlo de una mejor manera para no tener fotogramas duplicados o perdidos para las codificaciones futuras? Gracias
Deshabilite el audio y los subtítulos y codifique. Luego mux el video codificado con el audio/subs originales en un nuevo MP4.
@Mulvya, ¿crees que el problema es una cuestión de coincidencia con el audio y los subs? :O Podría intentarlo..
@Mulvya ok, lo hice, manteniendo solo el video, sin embargo, como puede ver en la consola, los 2 cuadros duplicados todavía están allí: \
uso -vsync 0_
@Mulvya agregué vsync 0 y ahora no firma fotogramas duplicados, sin embargo, el tiempo siempre está fuera de aproximadamente 2 fotogramas en la comparación entre el código de tiempo y Adobe Premiere
Espera un minuto. Puede que sea este bicho .
@Mulvya Bien, pero deshabilitar los marcos B y P no solo hace que todo sea enorme. :O
Ninguna de las opciones que sugerí allí deshabilita los marcos P. Y los cuadros B no están deshabilitados, solo limitados. O simplemente podría vivir con los 2 marcos que faltan :)

Respuestas (1)

Es posible que tenga medios de velocidad de fotogramas variable. La base de tiempo parece bastante loca para los medios estándar de 24p. Podría presionarlo con MediaInfo (tenga en cuenta que la GUI de Windows incluye adware, pero la versión CLI no) y publicar el resultado de eso.

Sí... parece que sí, probé muchas transcodificaciones y siempre parece cambiar los fps sobre la marcha. ¿Cómo puedo obtener una salida constante?
Esa base de tiempo es el estándar que produce ffmpeg, es decir, .framerate x 512.
@Mulvya déjame publicar la información del último archivo codificado...
@Mulvya déjame responder aquí para que ambos puedan leer, hice muchas otras pruebas, también traté de codificar solo el video en .mov con un códec proress en lugar de h264... ffmpeg no muestra fotogramas duplicados, sin embargo, al principio al principio de la película está el fondo negro con texto blanco para los créditos iniciales... y en esta parte 00:00:00:03 y 00:00:00:04 se repiten 2 veces en el estreno dejando a Premiere siempre con +2 fotogramas por encima el total hasta el final :( No entiendo por qué, ¿puede haber algún error en escenas particulares como texto blanco sobre fondo negro?
@ user3450548 Lo que tendría que hacer es especificar manualmente la velocidad de fotogramas de salida en su herramienta de codificación. Entonces ffmpeg, usaría -r 24000/1001para 23.976, y para Handbrake hay un menú desplegable y seleccionaría Velocidad de fotogramas constante.