ffmpeg drawtext 时间码改变持续时间

ffmpeg drawtext 时间码改变持续时间

通常,当我更改帧速率时,我会使用 Adob​​e Premiere 并将视频素材解释为新的帧速率,因此持续时间会发生变化。这很好。但因为这是一个我想转换的 mkv 文件,所以我使用 ffmpeg。

但是在添加时间码时,我遇到了 ffmpeg 的一个奇怪的问题。

我使用的代码如下所示:

/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" 

制作的视频长约42分钟。

当我渲染没有 drawtext 的视频时:

/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"

渲染后的视频时长为 40 分 59 秒。这正是我想要的时长,与 Adob​​e 创建的时长相同。

为什么在图片中绘制时间码的情况下,视频时长比没有绘制时间码的情况下更长?

请问我怎样才能使用 ffmpeg 将 mkv 转换为具有 25fps 和刻录时间码的 DNxHD,正确的方法是什么?

答案1

您的日志显示:

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

这意味着您的设定被忽略,因此持续时间更长。

仅使用其中一个-vf-filter_complex同时用于音频和视频过滤:

/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"
  • 您可能必须更改timecode='01:00:00:00'timecode='01\:00\:00\:00'
  • 滤波简介

相关内容