前言
若只是实现一对一通信,仅使用webrtc就足够了。但有时间需要进行多个人的直播会议,当人比较多时,建议使用一个流媒体服务器,笔者使用的是SRS。
这个开源项目资料比较全,笔者仅在此记录下搭建过程
一、准备
1.操作系统ubuntu22.04 64位 x86架构(建议更新到最新)
2.安装编译器相关,执行如下命令
sudo apt-get install build-essential
二、获取源码并编译
源码下载
git clone -b develop https://gitee.com/ossrs/srs.git
注意: 建议使用国内的代码库,下载速度快一些
切换到srs/trunk
目录,并编译
cd srs/trunk
./configure --ffmpeg-opus=on
make
注:音频编码需要支持opus,所以记得需要添加ffmpeg-opus选项
若是需要播放网络摄像头的画面,建议使用如下编译选项
cd srs/trunk
./configure --gb28181=on --ffmpeg-opus=on
make
注:摄像头推流建议使用gb28181,视频选择x264编码,音频选择AAC编译
三、 设置配置文件,并启动服务
编译完成后,在conf目录下有多个配置文件,即可以直接使用,也可以修改或创建新的配置文件
笔者为方便测试,参考https.rtc.conf和push.gb28181.conf两个配置,合并成https.push.gb28181.conf,以方便测试
说明:
1.使用SRS的web端推流,需要使用https协助的接口,相关配置在https.rtc.conf中
2.播放网络摄像头的视频流,相关配置在push.gb28181.conf中
准备好配置文件后,就可以启动SRS服务器了,执行如下命令
CANDIDATE="192.168.1.10"
./objs/srs -c conf/https.push.gb28181.conf
若是在公网测试,CANDIDATE的地址设置成公网IP
若是在本地测试,CANDIDATE的地址设置成服务器网卡的IP
检查SRS是否成功启动,可以打开 http://192.168.1.10:8080,或者执行命令:
# 查看SRS的状态
./etc/init.d/srs status
# 或者看SRS的日志
tail -n 30 -f ./objs/srs.log
四、推拉流测试
访问http://192.168.1.0:8080或https://192.168.1.0:8088
如下所示
可以通过SRS控制台,查看相关流信息
进行SRS播放器,可以查看流信息
需要注意的是,若使用非默认端口的,需要手工修改下对应的端口,如下图所示
注:若需要web推流测试,且SRS没有安装在本地,需要使用https协议的接口
笔者测试项目如下
1.web推流,web拉流播放
2.gb28181推流,web拉流播放
3.webrtc native推流,web拉流播放
4.web推流,webrtc native拉流播放
5.gb28181推流,webrtc native拉流播放
6.webrtc native推流,webrtc native拉流播放
目前各测试项目工作正常
后记
本文档记录的是笔者的测试过程,有几点问题,笔者强调下
1.webrtc native默认推流使用opus音频编码,SRS默认使用AAC音频编码,建议在SRS中启用opus音频编码
注:每路音频编码AAC转opus都会消耗服务器资源的,不要开太多
2.webrtc native默认本地不启用h264编码的,需要自己打开相关编译选项;部分支持硬件加速的Android设备会启用h264,需要在编译时开户软解码。否则SRS默认默认不支持的,接口上会返回400错误
3.webrtc默认使用udp传输数据的,不建议修改成tcp
4.为测试方便,建议关闭浏览器的跨域限制
以谷歌浏览器为例:
在浏览器地址栏输入
chrome://flags/#block-insecure-private-network-requests
将Block insecure private network requests.
项的Default
改为Disabled
即可。