ffmpeg drawtext código de tiempo cambia la duración

ffmpeg drawtext código de tiempo cambia la duración

Normalmente, cuando cambio la velocidad de fotogramas, uso Adobe Premiere e interpreto el material de vídeo como una nueva velocidad de fotogramas, por lo que la duración cambia. Está bien. Pero como este es un archivo mkv que quería convertir, uso ffmpeg.

Pero tengo un problema extraño con ffmpeg al agregar código de tiempo.

El código que estoy usando se ve así:

/Applications/ffmpeg -probesize 50M -analyzeduration 100M -i "$f" -map 0:0 -map 0:1 -c:a pcm_s24le -async 1 -c:v dnxhd -b:v 36000k -r 25 -s 1920x1080 -aspect 16:9 -pix_fmt yuv422p -coder ac -trellis 0 -colorspace bt709 -color_range mpeg -subq 6 -me_range 16 -sc_threshold 40 -keyint_min 25 -g 50 -metadata creation_time=now -af atempo=1/0.95904 -vf setpts="0.95904*PTS" -vf drawtext="fontsize=30:fontfile=/library/fonts/tahoma.ttf: timecode='01\:00\:00\:00': r=25: x=main_w-180: y=30: fontcolor=white@1: box=1: boxcolor=0x00000000@1" -sn -y "/Volumes/videos/$FILENAME.mov" 

El vídeo creado tiene una duración aproximada de 42 minutos.

Cuando renderizo el video sin dibujar texto:

/Applications/ffmpeg -probesize 50M -analyzeduration 100M -i "$f" -map 0:0 -map 0:1 -c:a pcm_s24le -async 1 -c:v dnxhd -b:v 36000k -r 25 -s 1920x1080 -aspect 16:9 -pix_fmt yuv422p -coder ac -trellis 0 -colorspace bt709 -color_range mpeg -subq 6 -me_range 16 -sc_threshold 40 -keyint_min 25 -g 50 -metadata creation_time=now -af atempo=1/0.95904 -vf setpts="0.95904*PTS" -sn -y "/Volumes/videos/$FILENAME.mov"

La duración del video renderizado es de 40 min 59 s. Esa es la duración que quería y es la misma que crea Adobe.

¿Por qué la duración del vídeo, con el código de tiempo dibujado en la imagen, es mayor que sin él?

¿Cómo puedo convertir el mkv a un DNxHD con 25 fps y código de tiempo grabado, usando ffmpeg, la forma correcta, por favor?

Respuesta1

Su registro dice:

Multiple -filter, -af or -vf options specified for stream 0, only the last option '-filter:v drawtext' will be used.

Lo que significa que sus ajustes se ignoran y, por lo tanto, la duración es mayor.

Utilice sólo uno -vfo utilícelo -filter_complexpara filtrado de audio y vídeo:

/Applications/ffmpeg -probesize 50M -analyzeduration 100M -i "$f" -map 0:0 -map 0:1 -c:a pcm_s24le -async 1 -c:v dnxhd -b:v 36000k -r 25 -s 1920x1080 -aspect 16:9 -pix_fmt yuv422p -coder ac -trellis 0 -colorspace bt709 -color_range mpeg -subq 6 -me_range 16 -sc_threshold 40 -keyint_min 25 -g 50 -metadata creation_time=now -af atempo=1/0.95904 -vf setpts="0.95904*PTS,drawtext=fontsize=30:fontfile=/library/fonts/tahoma.ttf: timecode='01:00:00:00': r=25: x=main_w-180: y=30: fontcolor=white@1: box=1: boxcolor=0x00000000@1" -sn -y "/Volumes/videos/$FILENAME.mov"

información relacionada