ffmpeg繪製文字時間碼變更持續時間

ffmpeg繪製文字時間碼變更持續時間

通常,當我更改幀速率時,我會使用 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分鐘。

當我渲染沒有繪圖文字的影片時:

/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'.
  • 過濾介紹

相關內容