我正在尝试将视频速度提高一倍。
我使用以下命令:
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
。