
通常,當我更改幀速率時,我會使用 Adobe 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 秒。這就是我想要的持續時間,並且與 Adobe 創建的時間相同。
為什麼在圖片中繪製了時間碼的影片時長比沒有繪製時間碼時要長?
如何使用 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'
. - 看過濾介紹。