其它过滤器文章:
day09-----1-----FFmpeg过滤器框架分析
day09-----2-----视频过滤器实战
day09-----3-----音频过滤器实战(ffmpeg进行混音,将两路音频pcm数据合成一路输出)
day09-----4-----FFmpeg filter补充之使用filter添加水印
day09-----5-----FFmpeg filter补充之使用复杂的filter过滤视频

一 音频混音的流程

实际上对于音频过滤的流程,和上一节9-2的视频过滤器流程几乎是一样的,只不过音频调用的一两个函数有点区别,并且音频在输出的时候多了一个output,即output + sink,其中output是多出来的。

// 1 添加输入流

// 2 添加输出流(前两步实际就是9-2的第3与4步)

// 3 init之前,要先添加输入源和输出源。(这一步就是9-2的第5-10步,只不过音频有一两个调用的函数与视频不一样)

// 4 开始混音
// 4.1 从文件读取数据
// 4.2 将数据添加到混音器。
// 4.3 将上面的两帧进行混音。

前3步的函数处理,实际就是下图的处理过程。
在这里插入图片描述

二 代码

关于代码,因为后续需要改动,赖得每次改完后这里还得改,就不贴自己的出来了。
大家可以参考这篇文章ffmpeg进行混音,将两路音频pcm数据合成一路输出,是一样的,只不过我自己打上了注释。

实际上也可以使用命令实现:

ffmpeg -i buweishui_1m.mp3 -i huiguniang.mp3 -filter_complex amix=inputs=2:duration=longest:dropout_transition=3 out.mp3 -y

三 过滤效果

音频没法看效果,不过按照上面的代码出来后,有一个output.pcm,可以使用audacity软件进行播放。听出发现,最短的音频结束后,最后就剩下长的音频的声音了,不过应该是被过滤器处理过,声音感觉和原来的有点区别,毕竟采样率被改成了96khz。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐