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

San*_*ich 18 ffmpeg video-conversion actionscript-3

我在 Flash Builder(动作脚本 3)中使用 ffmpeg 将视频转换为视频的延时。我已经研究出如何使用 setpts 来执行此操作,但生成的输出文件与输入的长度相同(时间流逝后仅显示最后一帧),我希望根据传递的设置更改持续时间到ffmpeg。

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

ffmpeg -i input.mp4 -filter:v "setpts=0.5*PTS" output.mp4
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激!

San*_*ich 27

问题解决了。我没有删除音频,所以大概它在视频的全部时间内播放几乎空的音频文件。

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

-an 从视频中删除音频。


Sun*_*Sun 6

这里有一些关于加速音频的更多细节。你最多可以做 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

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

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