FFMPEG - 将视频转换为延时视频

FFMPEG - 将视频转换为延时视频

我在 flash builder (Action script 3) 中使用 ffmpeg 将视频转换为视频的延时拍摄。我已经弄清楚如何使用 setpts 来执行此操作,但生成的输出文件的长度与输入的长度相同(延时拍摄后仅显示最后一帧),我希望根据传递给 ffmpeg 的设置更改持续时间。

我首先通过命令行尝试执行以下操作:

ffmpeg -i input.mp4 -filter:v "setpts=0.5*PTS" output.mp4

任何帮助将不胜感激!

答案1

问题解决了。我没有删除音频,所以大概是在整个视频播放过程中播放了几乎为空的音频文件。

ffmpeg -i input.mp4 -filter:v "setpts=0.5*PTS" -an output.mp4

-an 从视频中删除音频。

答案2

这里有一些关于加速音频的详细信息。您最多可以将其加速 2 倍,但您可以对其进行欺骗,使其速度更快(来源):

加快/减慢音频

你可以加速或减速声音的使用 atempo 音频过滤器。要使音频速度加倍:

ffmpeg -i input.mkv -filter:a "atempo=2.0" -vn output.mkv

atempo 过滤器只能使用 0.5 到 2.0 之间的值(因此它可以将速度减慢到不低于原始速度的一半,并且加速到不超过输入的两倍)。如果需要,您可以通过将多个 atempo 过滤器串联在一起来绕过此限制。以下过滤器可将音频速度提高四倍:

ffmpeg -i input.mkv -filter:a "atempo=2.0,atempo=2.0" -vn output.mkv

使用复杂的过滤图,您可以同时加速视频和音频:

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

相关内容