使用nginx RTMP(nginx的一个插件模块,具体的网上搜一下)做一个简易的多人音频通话流媒体服务器,多个端通话时,客户端无法处理其他端发过来的音频流,比如A、B、C三个端通话,A设备同时持有B、C的音频流,这样对设备端非常的不友好。
这时候就需要用到一个强大的工具,FFMPEG,安装网上很多,搜下就有,具体命令如下:
ffmpeg -i rtmp://source1 -i rtmp://source2 -filter_complex amix=inputs=2:duration=longest -c:a aac -f flv rtmp://destination
上述命令假设你有两个输入 RTMP 音频流,分别是 rtmp://source1
和 rtmp://source2
,以及一个输出 RTMP 地址 rtmp://destination
。
使用 -filter_complex amix=inputs=2:duration=longest
部分来合并两个输入流,并确保输出流的时长与最长的输入流相匹配。
使用 -c:a aac
部分来指定输出音频的编码格式为 AAC。
最后,使用 -f flv
来指定输出格式为 FLV。
这时候我们可以动态的根据参与通话的设备数量来通过上诉命令,合并音频流,并推送到新的一个流地址,设备端只需要拿到合并的这个地址播放即可。
标签:通话,音频,合并,nginx,推拉,RTMP,rtmp From: https://www.cnblogs.com/rolayblog/p/17506224.html