目录
1、yangwebrtc介绍
https://gitee.com/yangrtc/yangwebrtc
https://github.com/yangrtc/yangrtc2
yangwebrtc是一个自主研发的支持Webrtc/Srt/Rtmp的rtc架构,包含多种视音频编解码和处理等。
支持视频会议、高清录播直播、直播互动等多种视音频应用。
可用于远程教育、远程医疗、指挥调度、安防监控、影视录播、协同办公、直播互动等多种行业应用。
webrtc支持为自主研发,非谷歌lib,兼容webrtc协议 ,可与谷歌Lib和浏览器互通
支持Srs sfu https://github.com/ossrs/srs/
支持Linux/Windows操作系统,android/ios/mac版本正开发中
这里面有封装好的底层库,还附带了一个推流客户端和播放客户端。我采用的是2021年10月31日最新版的2.0.032版本。
2、编译必需的环境搭建
2.1 webrtc服务器
这里有2种,一种是srs4.0,一种是zlm。如果没有linux环境的可以使用一下zlm。博主这里使用的是srs,用zlm的同学请自行摸索。
这里yangwebrtc推荐的配置是https.rtc.conf
git clone -b 4.0release https://gitee.com/ossrs/srs.git &&
cd srs/trunk && ./configure && make && objs/srs -c conf/https.rtc.conf
2.2 QT
2.2.1 QT环境
你需要一个QT环境(推荐5.14.2及以上版本)来打开工程libyangrtc2、yangpushstream2、yangplayer2,如需改动目录将其.pro文件中HOME_BASE=..\更改为所需目录。
QT下载地址:Index of /archive/qt/5.14/5.14.2(博主使用的就是这个链接)
2.2.2 QT编译器
需要下载QT Creator,也就是qt可视化界面,这个自行百度了。
2.2.3 Windows运行库
需要下载msvc2019-64位,也是yangrtc作者推荐的。2.0.032版本目前不支持mingw版本。
在这里注意以下,2019在qt下好像支持不是很友好,需要自己配置一下骗过qt (╥﹏╥),这里推荐一个文章
qt 已经安装了msvc2019,如何配置msvc2017的开发环境 - 小城熊儿 - 博客园
搭建Qt中MSVC2019开发环境 - 看不见的R - 博客园
我这里没有2017,我就用2015顶替也是可以的,所以我后面的qt库都要用这个2015的
3、编译前的准备
3.1 下载yangrtc源码和库
Release 2.0.032 with thirdparty lib and runtime · yangrtc/yangrtc2 · GitHub
yangrtc2-2.0.032.rar
yangrtc2_win_runtime.rar
这里是根据编译操作教程视频来的
yangrtc2(yangwebrtc)windows版本编译教程_哔哩哔哩_bilibili
https://gitee.com/yangrtc/yangwebrtc/releases/yangrtc2.032_video
先编译yangrtc2,建议编译debug的,一路build的下去。只要qt配置对了,基本是可以一路畅通编译的。
3.2 配置库
教程视频里面也有教,二个就是把qt的一些库拷贝过来,或者你在系统环境制定PATH。或者最快的就是用F:\Qt\Qt5.14.2\5.14.2\msvc2015_64\bin里的windeployqt.exe 来直接给exe配库。
用法就是在powershell里面运行 windeployqt.exe yangpushstream2.exe
最后的库大致是这样的
4 运行
4.1 配置本地视频和音频
由于我踩过坑的我知道,所以这里要给自己配一个usb摄像头之类的和麦克风。没有麦克风我后面会说到。摄像头没有的话可以度娘一下VCam,这是一个虚拟本地摄像头。
4.2 运行
确保srs启动成功后,运行yangpushstream2.exe是会失败的话,比如这种:
我这里的原因是定位到了由于音频打开失败(因为我们没有麦克风),但是这个bug没处理,导致运行出错了。这里我们将这几处注释
YangPushHandleImpl.cpp
3 YangPushHandleImpl::YangPushHandleImpl(....
...
10 //m_cap->startAudioCapture();//注释掉音频捕获
11 m_cap->startVideoCapture();
12 //m_cap->initAudioEncoding();//注释掉音频编码初始化
13 m_cap->initVideoEncoding();
}
58 int YangPushHandleImpl::publish(...
...
81 m_pub->start();
82 //m_cap->startAudioCaptureState();//注释掉开始音频
83 m_cap->startVideoCaptureState();
84 return err;
}
重新构建yangrtc2和yangpushstream2,再运行yangpushstream2.exe之后就能成功出界面了。修改webrtc的推流地址,点击推流即可成功推流。
在yangplayer2.exe上粘贴推流地址,就能出现播放画面了
实时的效果还是不错的哈。
5 问题
还是有一些问题需要后期迭代解决的,比如:
音频和视频的单独兼容
程序的重复推流或者播放有时会出现问题导致闪退
上面也看出了一开始播放的时候有花屏
播放一个ffmpeg推给srs的流时,播放处于加速状态,时间戳没有处理好
在srs上显示的数据不对,入口带宽为0
支持开源!
更支持开源贡献者!
yangrtc作者也为降低这个使用rtc门槛而努力,大家快去多支持支持!