【问题标题】:Save Slow motion video with ffmpeg on android devices在 android 设备上使用 ffmpeg 保存慢动作视频
【发布时间】:2015-09-26 13:55:32
【问题描述】:

我想通过我的 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 命令可以以慢动作保存视频吗?

【问题讨论】:

  • 不鼓励您的第一种方法。有关详细信息,请参阅here。还包括调整setpts 的第二种方法的完整控制台输出,这对我们指导您很重要。 “工作不正常”到底是什么意思?
  • 工作不正常是指音频在处理后的视频中不同步,它没有变慢,如果我使用 filter -an 删除音频,视频会变慢
  • 您的方法不会像预期的那样减慢音频速度。它只是用于视频。使用atempo相应地调整音频速度。

标签: android video ffmpeg frame-rate slowmotion


【解决方案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 帖子以获取完整教程

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-06
    • 1970-01-01
    • 2016-03-01
    • 1970-01-01
    • 2015-01-24
    • 1970-01-01
    • 2016-05-09
    • 1970-01-01
    相关资源
    最近更新 更多