我正在嘗試將影片的速度加倍。
我使用以下命令:
ffmpeg -i output.mp4 -filter:v "setpts=0.5*PTS" output2.mp4
和
ffmpeg -i output.mp4 -vf "setpts=0.5*PTS" output3.mp4
我在網路上發現這是標準方法。
但是,我的所有文件的長度都相同:
joe@joe-Amd-Am4-Home-Office:~$ for file in *.mp4; do duration=$(ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 "$file"); echo "$file: $duration seconds"; done
output2.mp4: 373.014000 seconds
output3.mp4: 373.014000 seconds
output.mp4: 373.014000 seconds
發生了什麼事以及如何正確加快影片速度?我用的是ubuntu。
答案1
我的第一個猜測是 PTS 方法,記錄在案這裡,「透過改變每個視訊幀的呈現時間戳記(PTS)」來工作,玩家會尊重並加快速度。但這或許並沒有改變報道所看到的視頻長度ffprobe
。
但擺弄我隨機測試的 mp4 表明,雖然視訊加速了,但音訊卻沒有。這可以解釋為什麼我也透過 看到每個影片都有相同的時間戳記ffprobe
。這與上面連結的文檔中的註釋一致:
請注意,在以下範例中,音訊串流未更改,因此最好使用 停用它
-an
。
另一個答案超級用戶提供以下複雜的濾鏡來加速視訊和音訊:
ffmpeg -i input.mkv -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" -map "[v]" -map "[a]" output.mkv
那個對我有用,透過顯示一半的長度ffprobe
。