本发明涉及网络音频源选择技术领域,具体涉及一种基于ffmpeg的网络音频选择源的实现方法。
背景技术:
随着5g无线通信和网络技术的蓬勃发展,网络视频会议、实时音视频传输在实际生活中的应用越来越广泛。目前音频接收端播放的大部分是单一音频源数据,而实际应用中可能会出现两个以上音频来源,需要对多个音频源进行控制,单独输出某个音频数据,或者对多个音频源进行同时输出。
ffmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。它提供了录制、转换以及流化音视频的完整解决方案。但是针对网络音频中多音频源时,无法对多音频源进行合并输出。
技术实现要素:
本发明为了克服以上技术的不足,提供了一种可以同多个音频源中的声道进行提取并进行合流播放的方法。
本发明克服其技术问题所采用的技术方案是:
一种基于ffmpeg的网络音频选择源的实现方法,包括如下步骤:
a)通过ffmpeg注册音视频编解码器、注册音视频过滤器以及注册音视频复用器;
b)注册加载网络和加密的相关库;
c)打开网络中的n路音频流,n为大于等于2的正整数,获取每路音频流对应解码器;
d)使用对应的解码器将对应的音频流中的单一声道进行提取;
e)使用混音合流过滤器对每路音频流提取的单一声道进行合并并输出播放。
进一步的,步骤a)中通过ffmpeg中的avcodec_register_all函数注册加载音视频编解码器。
进一步的,步骤a)中通过ffmpeg中的avfilter_register_all函数注册加载音视频复用器。
进一步的,步骤a)中通过ffmpeg中的av_register_all函数注册加载音视频过滤器。
进一步的,步骤b)中通过ffmpeg中的avformat_network_init函数注册加载网络和加密的相关库。
进一步的,步骤c)中通过ffmpeg中的avformatcontext函数根据音频流查找到对应的解码器。
进一步的,步骤d)中每路音频流中有m个声道,m为大于等于2的正整数,解码器将m个声道中的任意一声道进行提取。
进一步的,步骤d)中每路音频流中有m个声道,m为大于等于2的正整数,解码器将m个声道合称为一个声道后提取。
本发明的有益效果是:通过对各种音视频编解码器、复用器、过滤器的注册,同时可以打开多路网络音频源,并根据音频新型选择合适的音频编码器,提取单一声道并使用合适的音频过滤器进行合流播放。实现了基于ffmpeg的多路网络音频选择输出方案,可以将网络传输过来的多路音频进行合并输出,具有很高的传输实时性,可以满足实际应用中多路音频采集输出的需求。
附图说明
图1为本发明的方法流程图。
具体实施方式
下面结合附图1对本发明做进一步说明。
一种基于ffmpeg的网络音频选择源的实现方法,包括如下步骤:
a)通过ffmpeg注册音视频编解码器、注册音视频过滤器以及注册音视频复用器;
b)注册加载网络和加密的相关库;
c)打开网络中的n路音频流,n为大于等于2的正整数,获取每路音频流对应解码器;
d)使用对应的解码器将对应的音频流中的单一声道进行提取;
e)使用混音合流过滤器对每路音频流提取的单一声道进行合并并输出播放。
通过对各种音视频编解码器、复用器、过滤器的注册,同时可以打开多路网络音频源,并根据音频新型选择合适的音频编码器,提取单一声道并使用合适的音频过滤器进行合流播放。实现了基于ffmpeg的多路网络音频选择输出方案,可以将网络传输过来的多路音频进行合并输出,具有很高的传输实时性,可以满足实际应用中多路音频采集输出的需求。
优选的,步骤a)中通过ffmpeg中的avcodec_register_all函数注册加载音视频编解码器。
优选的,步骤a)中通过ffmpeg中的avfilter_register_all函数注册加载音视频复用器。
优选的,步骤a)中通过ffmpeg中的av_register_all函数注册加载音视频过滤器。
优选的,步骤b)中通过ffmpeg中的avformat_network_init函数注册加载网络和加密的相关库。
优选的,步骤c)中通过ffmpeg中的avformatcontext函数根据音频流查找到对应的解码器。
优选的,步骤d)中每路音频流中有m个声道,m为大于等于2的正整数,解码器将m个声道中的任意一声道进行提取。
优选的,步骤d)中每路音频流中有m个声道,m为大于等于2的正整数,解码器将m个声道合称为一个声道后提取。
以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
1.一种基于ffmpeg的网络音频选择源的实现方法,其特征在于,包括如下步骤:
a)通过ffmpeg注册音视频编解码器、注册音视频过滤器以及注册音视频复用器;
b)注册加载网络和加密的相关库;
c)打开网络中的n路音频流,n为大于等于2的正整数,获取每路音频流对应解码器;
d)使用对应的解码器将对应的音频流中的单一声道进行提取;
e)使用混音合流过滤器对每路音频流提取的单一声道进行合并并输出播放。
2.根据权利要求1所述的基于ffmpeg的网络音频选择源的实现方法,其特征在于:步骤a)中通过ffmpeg中的avcodec_register_all函数注册加载音视频编解码器。
3.根据权利要求1所述的基于ffmpeg的网络音频选择源的实现方法,其特征在于:步骤a)中通过ffmpeg中的avfilter_register_all函数注册加载音视频复用器。
4.根据权利要求1所述的基于ffmpeg的网络音频选择源的实现方法,其特征在于:步骤a)中通过ffmpeg中的av_register_all函数注册加载音视频过滤器。
5.根据权利要求1所述的基于ffmpeg的网络音频选择源的实现方法,其特征在于:步骤b)中通过ffmpeg中的avformat_network_init函数注册加载网络和加密的相关库。
6.根据权利要求1所述的基于ffmpeg的网络音频选择源的实现方法,其特征在于:步骤c)中通过ffmpeg中的avformatcontext函数根据音频流查找到对应的解码器。
7.根据权利要求1所述的基于ffmpeg的网络音频选择源的实现方法,其特征在于:步骤d)中每路音频流中有m个声道,m为大于等于2的正整数,解码器将m个声道中的任意一声道进行提取。
8.根据权利要求1所述的基于ffmpeg的网络音频选择源的实现方法,其特征在于:步骤d)中每路音频流中有m个声道,m为大于等于2的正整数,解码器将m个声道合称为一个声道后提取。