将视频展开(扩展)到特定的持续时间

时间:2013-02-08 22:05:03

标签: ubuntu video ffmpeg vlc transcoding

VLCFFmpeg(或AVconv)是否有任何功能可以将视频的持续时间强制为一定的秒数?

假设我有一个... 5分钟.mp4视频(没有音频)。有没有办法让上述任何工具“扩展”视频到更长的时间?该视频来自Power Point幻灯片,但它太短(运行得太快,不能这么说)。这个想法是自动插入帧,使其达到指定的持续时间。它看起来像是非常可行的东西(呃...对于像我一样的视频编码/转码的新手):一个5分钟的视频,30fps意味着我有9000帧......为了让它长10倍,得到第一个“真实”框架,复制十次,然后获得第二个“真实”框架,复制十次......依此类推。

我正在使用Ubuntu 12.04,但如果需要,我可以安装/编译任何所需的软件。到目前为止,我有VLC,AVConv和FFmpeg(特定文件夹中的FFmpeg,所以它不会与AVConv冲突)

提前谢谢。

1 个答案:

答案 0 :(得分:6)

尝试ffmpeg中的setpts过滤器。来自filter documentation

  

应用慢动作效果:
  setpts = 2.0 * PTS

你想要的东西大约长10倍:

ffmpeg -i input -vf setpts=10*PTS output

ffmpeg将复制帧以实现新的持续时间。对于想要对音频执行相同操作的用户,请参阅asetpts过滤器。我假设你想在MP4容器中使用H.264,因为你没有指出你想要的输出格式:

ffmpeg -i input -vf setpts=10*PTS -c:v libx264 -preset medium -crf 23 output.mp4

这些是我用来说明-preset-crf选项的默认设置。有关如何获得所需质量的详细说明,请参阅FFmpeg and x264 Encoding Guide

为了将来参考,ffmpeg命令行使用问题应该指向Super User,而不是特定于编程的Stack Overflow。