使用ffmpeg 将多个音频插入到视频中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用ffmpeg 将多个音频插入到视频中相关的知识,希望对你有一定的参考价值。

参考技术A 最近有一个需求,需要将多个音频文件延时插入到一段视频中,经过学习,得到以下命令:

-y -i videoSource.mp4 -i test1.mp3 -i test2.mp3 -i test3.mp3 -filter_complex [1]adelay=5000|5000=[s1];[2]adelay=15000|15000=[s2];[3]adelay=25000|25000=[s3];[0:a][s1][s2][s3]amix=4[a] -map 0:v -map [a] -c:v copy result.mp4

如果不需要视频原声,则修改命令为:

-y -i videoSource.mp4 -i test1.mp3 -i test2.mp3 -i test3.mp3 -filter_complex [1]adelay=5000|5000=[s1];[2]adelay=15000|15000=[s2];[3]adelay=25000|25000=[s3];[s1][s2][s3]amix=3[a] -map 0:v -map [a] -c:v copy result.mp4

以上命令为android使用,如果需要在windows使用,则需要修改为:

-y -i videoSource.mp4 -i test1.mp3 -i test2.mp3 -i test3.mp3 -filter_complex "[1]adelay=5000|5000=[s1];[2]adelay=15000|15000=[s2];[3]adelay=25000|25000=[s3];[s1][s2][s3]amix=3[a]" -map 0:v -map "[a]" -c:v copy result.mp4

其中

[1]adelay=5000|5000=[s1]的意思为:取第二个输入文件的音轨(下标从0开始)并延时5000毫秒

[0:a]的意思为:第一个输入文件的音频资源

ffmpeg:如何将音频波文件循环到没有任何音频通道的视频中

【中文标题】ffmpeg:如何将音频波文件循环到没有任何音频通道的视频中【英文标题】:ffmpeg: How to loop audio wave file into a video which has no any audio channel 【发布时间】:2020-08-25 18:31:15 【问题描述】:

如何使用 ffmpeg 将音频波或 mp3 文件循环到没有任何音频通道的视频中?

这是我的代码已经适用于已经有音频通道的视频文件。

ffmpeg -i somevideoinput.mp4 -stream_loop -1 
       -i will_be_looped.wav 
 -vcodec copy  
-max_muxing_queue_size 9999
-shortest
-fflags +shortest -max_interleave_delta 200M
-map 0:0 -map 1:0
 output.mp4

用循环输入波形文件替换视频的 auido 频道。但是如果视频已经没有任何音频通道,它就不起作用了。

你知道吗?也许我要添加一些 filter_complex 参数?

【问题讨论】:

【参考方案1】:

-stream_loop是输入选项,所以必须在-i之前使用:

ffmpeg -i somevideoinput.mp4 -stream_loop -1 -i will_be_looped.wav 
-vcodec copy 
-max_muxing_queue_size 9999
-shortest
-fflags +shortest -max_interleave_delta 200M
-map 0:v -map 1:a
 output.mp4

我还更改了-map 选项以使用流说明符来确保它选择正确的流。

【讨论】:

@KursatTurkay 一本书是FFmpeg Basics,但我对内容不熟悉。 “如果输入电影还没有音频通道,仍然没有音频”。应该有音频,因为-map 正在从will_be_looped.wav 中选择音频。为了能够理解问题,我需要查看您的 ffmpeg 命令以及该命令的完整日志。您可以edit您的问题以包含此信息。 gr8 man @KursatTurkay 看看FFmpeg Wiki补充官方documentation。

以上是关于使用ffmpeg 将多个音频插入到视频中的主要内容,如果未能解决你的问题,请参考以下文章

使用 FFmpeg 将一个视频处理为多个输出会导致最后一个输出中没有音频

ffmpeg:如何将音频波文件循环到没有任何音频通道的视频中

FFMPEG - 转换具有多个音频和字幕的视频

使用 ffmpeg 和 python 将视频中的所有音频流提取到单独的音频文件中

ffmpeg_拼接并提取flv视频文件中的音频生成mp3文件

使用 FFmpeg 将音频输入与视频混合到特定位置