关闭。这个问题是off-topic .它目前不接受答案。
想改进这个问题? Update the question所以它是on-topic对于堆栈溢出。
9年前关闭。
Improve this question
做VLC或 FFmpeg (或 AVconv )有任何功能可以将视频的持续时间强制为一定的秒数?
假设我有一个...... 5 分钟的 .mp4 视频(无音频)。有没有办法让上述任何工具将视频“扩展”到更长的持续时间?该视频来自 Power Point 幻灯片,但它太短(运行速度太快,不能这么说)。这个想法将自动插入帧,使其达到指定的持续时间。它看起来很可行(呃……对于像我这样的视频编码/转码新手来说):一个 5 分钟的视频,30fps 意味着我有 9000 帧……为了让它长 10 倍,得到第一个“真实”帧,复制十次,然后得到第二个“真实”帧,复制十次……以此类推。
我使用的是 Ubuntu 12.04,但如果需要,我可以安装/编译任何所需的软件。到目前为止,我有 VLC、AVConv 和 FFmpeg(FFmpeg 在特定文件夹中,所以它不会与 AVConv 冲突)
先感谢您。
最佳答案
在 ffmpeg
中使用 setpts video filter。简单的例子:
setpts=PTS*2
或 setpts=PTS/0.5
setpts=PTS/2
或 setpts=PTS*0.5
视频速度提升 10 倍
ffmpeg -i input.mp4 -filter_complex "setpts=PTS/10" output.mp4
音频和视频速度提高 10 倍对于音频,请使用 atempo 、 rubberband 或 asetrate 音频过滤器。
ffmpeg -i input.mp4 -filter_complex "[0:v]setpts=PTS/10[v];[0:a]atempo=10[a]" -map "[v]" -map "[a]" output.mp4
匹配视频到音频的持续时间在此示例中,
audio.wav
持续时间为 30 秒,video.mp4
为 90 秒。 ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 audio.wav
ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 video.mp4
ffmpeg -i video.mp4 -i audio.wav -filter_complex "[0:v]setpts=PTS*30/90[v]" -map "[v]" -map 1:a -shortest output.mp4
使视频适合特定时间
在此示例中,输入为 120 秒。所需的输出为 30 秒:
ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 input.mp4
ffmpeg -i input.mp4 -filter_complex "setpts=PTS/(120/30);atempo=120/30" output.mp4
关于ubuntu - 将视频展开(延长)到特定时长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60172729/