我想通过我的android应用程序将视频保存为慢动作,我尝试通过改变帧率将视频转换为慢动作。
我使用了以下命令,第一个命令是将每秒30帧的视频转储到临时目录,然后第二个命令是使用这些图像创建帧率更低或更快的视频,然后我从临时目录中删除所有图像。
ffmpeg -i input_file.mp4 -r 30/1 img%03d.png
ffmpeg -framerate 15/1 -i img%03d.png -r 30 -pix_fmt yuv420p out4.mp4
但是这是一个非常慢的操作。即使是小视频也要花很长时间。
我甚至尝试改变视频的PTS(演示时间戳),但它在安卓手机上不能正常工作使用以下命令:
ffmpeg -i input.mkv -filter:v "setpts=2.0*PTS" output.mkv
如下所示:https://trac.ffmpeg.org/wiki/How%20to%20speed%20up%20/%20slow%20down%20a%20video
谁能告诉我怎样才能快一点?是否有必要将帧保存到临时目录,是否可以通过某种方法将ffmpeg进程的输出传递给并发执行的另一个ffmpeg进程?是否有其他的ffmpeg命令来保存视频在慢动作?
你只需要使用下面的命令来创建慢动作视频使用ffmpeg-
String[] complexCommand = {"-y", "-i", inputFileAbsolutePath, "-filter_complex", "[0:v]setpts=2.0*PTS[v];[0:a]atempo=0.5[a]", "-map", "[v]", "-map", "[a]", "-b:v", "2097k", "-r", "60", "-vcodec", "mpeg4", outputFileAbsolutePath};
在我的博客上查看完整的教程