在Android设备上使用ffmpeg保存慢动作视频

时间:2015-07-08 14:55:11

标签: android video ffmpeg frame-rate slowmotion

我想通过我的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(演示时间戳),但它在Android手机上无法正常工作 使用此命令:

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命令以慢动作保存视频?

1 个答案:

答案 0 :(得分:1)

您只需使用以下命令即可使用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};

在我的博客上查看this帖子以获取完整教程