ste*_*ter 16 audio video ffmpeg
我正在使用 ffmpeg 将音频添加到视频文件中
ffmpeg -i videofile.mp4 -i audiofile.wav output.mp4
Run Code Online (Sandbox Code Playgroud)
但是,如果它比视频长,这会将输出视频文件扩展为音频文件的长度。如果音频文件比视频短,则使用 -shortest 将视频文件缩短。那么是否有一个标志告诉 ffmpeg 将输出视频的长度保持为输入视频的长度?
Eug*_*eck 15
-shortest
就是你想要的。没有标志可以自动执行此决定。
编辑
受到@deadcode 回答的启发,我需要明确指出,“没有要自动化的标志”当然不是真的,如果您愿意重新编码:在这种情况下,请apad
按照@deadcode 的建议进行操作。
但是,如果您想避免重新编码(即-c:v copy
),答案就成立。
有一个使用ffconcat
demuxer的解决方法,但它需要一些工作:
.
file 'audiofile.wav'
file 'silence.wav'
file 'silence.wav'
...
file 'silence.wav'
Run Code Online (Sandbox Code Playgroud)
ffmpeg -i videofile.mp4 -f concat -i audio.ffconcat -c:v copy output.mp4
这将在apad
没有过滤器图的情况下合成过滤器,从而允许多路复用而无需重新编码。
dea*_*ode 13
我相信您可以通过使用 -filter_complex 选项和 apad 过滤器选项来实现您想要的目标,如果视频更长,则在最后用静音填充音频。你的命令是:
ffmpeg -i videofile.mp4 -i audiofile.wav -filter_complex " [1:0] apad " -shortest output.mp4
这假设您想要的音频位于 audiofile.wav 的第一个流中,[A:B] 语法表示从 A'th 输入中获取 B'th 流(均以 0 开头,因此 [1:0] 是来自第二个输入的第一个流,或上面的 audiofile.wav)。
详情见:https : //www.ffmpeg.org/ffmpeg-filters.html#Examples-68
小智 9
如果您知道视频文件的长度,则可以使用
ffmpeg -i videofile.mp4 -i audiofile.wav -t 43 output.mp4
Run Code Online (Sandbox Code Playgroud)
其中 43 是您的视频文件的长度(以秒为单位)。
归档时间: |
|
查看次数: |
28837 次 |
最近记录: |