目录
1、yangwebrtc介绍
2、编译必需的环境搭建
2.1 webrtc服务器
2.2 QT
2.2.1 QT环境
2.2.2 QT编译器
2.2.3 Windows运行库
3、编译前的准备
3.1 下载yangrtc源码和库
3.2 配置库
4 运行
4.1 配置本地视频和音频
4.2 运行
5 问题
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种,一种是srs4.0,一种是zlm。如果没有linux环境的可以使用一下zlm。博主这里使用的是srs,用zlm的同学请自行摸索。
https://github.com/ossrs/srsa
这里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
你需要一个QT环境(推荐5.14.2及以上版本)来打开工程libyangrtc2、yangpushstream2、yangplayer2,如需改动目录将其.pro文件中HOME_BASE=..\更改为所需目录。
QT下载地址:Index of /archive/qt/5.14/5.14.2(博主使用的就是这个链接)
需要下载QT Creator,也就是qt可视化界面,这个自行百度了。
需要下载msvc2019-64位,也是yangrtc作者推荐的。2.0.032版本目前不支持mingw版本。
在这里注意以下,2019在qt下好像支持不是很友好,需要自己配置一下骗过qt (╥﹏╥),这里推荐一个文章
qt 已经安装了msvc2019,如何配置msvc2017的开发环境 - 小城熊儿 - 博客园
搭建Qt中MSVC2019开发环境 - 看不见的R - 博客园
我这里没有2017,我就用2015顶替也是可以的,所以我后面的qt库都要用这个2015的
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配置对了,基本是可以一路畅通编译的。
教程视频里面也有教,二个就是把qt的一些库拷贝过来,或者你在系统环境制定PATH。或者最快的就是用F:\Qt\Qt5.14.2\5.14.2\msvc2015_64\bin里的windeployqt.exe 来直接给exe配库。
用法就是在powershell里面运行 windeployqt.exe yangpushstream2.exe
最后的库大致是这样的
由于我踩过坑的我知道,所以这里要给自己配一个usb摄像头之类的和麦克风。没有麦克风我后面会说到。摄像头没有的话可以度娘一下VCam,这是一个虚拟本地摄像头。
确保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上粘贴推流地址,就能出现播放画面了
实时的效果还是不错的哈。
还是有一些问题需要后期迭代解决的,比如:
音频和视频的单独兼容
程序的重复推流或者播放有时会出现问题导致闪退
上面也看出了一开始播放的时候有花屏
播放一个ffmpeg推给srs的流时,播放处于加速状态,时间戳没有处理好
在srs上显示的数据不对,入口带宽为0
支持开源!
更支持开源贡献者!
yangrtc作者也为降低这个使用rtc门槛而努力,大家快去多支持支持!
yangwebrtc: 中国人自己的Webrtc,自主研发,兼容webrtc协议,可与谷歌webrtc类库互通,支持Webrtc/SRT/RTMP。https://gitee.com/yangrtc/yangwebrtc