在windows下yangwebrtc2编译运行成功——强推防踩坑

目录

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 问题


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的同学请自行摸索。

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

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门槛而努力,大家快去多支持支持!

yangwebrtc: 中国人自己的Webrtc,自主研发,兼容webrtc协议,可与谷歌webrtc类库互通,支持Webrtc/SRT/RTMP。https://gitee.com/yangrtc/yangwebrtc

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
引用\[1\]:MetaRTC是一个为嵌入式/物联网打造的webRTC库,为第三代互联网元宇宙提供webRTC能力。MetaRTC实现了webrtc协议,提供纯C和C++两种版本接口。在更改webrtc协议时,可以按照以下步骤进行操作: 1. 克隆MetaRTC的代码库:git clone https://github.com/metartc/metaRTC.git 2. 修改include/yang_config.h文件,对接srs,将#define Yang_HaveDatachannel 1修改为#define Yang_HaveDatachannel 0,表示禁用数据通道功能。 3. 修改ssl库:MetaRTC默认使用mbedtls作为ssl库,如果需要使用openssl,可以将#define Yang_Using_Openssl 0修改为#define Yang_Using_Openssl 1。 4. 编译MetaRTC:进入libmetartccore5目录,执行cmake_x64.sh或者cmake_android.sh,进行编译。 引用\[2\]:WebRTC提供了视频会议的核心技术,包括音视频的采集、编解码、网络传输、展示等功能,并且还支持跨平台,包括linux、windows、mac、android等。如果想要使用webrtc,可以参考相关文档和示例代码,了解webrtc的使用方法和接口。 综上所述,更改webrtc协议可以通过修改MetaRTC的配置文件和编译过程来实现。具体的步骤包括克隆代码库、修改配置文件、选择ssl库、编译MetaRTC等。 #### 引用[.reference_title] - *1* [流媒体分析之webrtc协议测试环境搭建](https://blog.csdn.net/u012794472/article/details/126827566)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [webrtc网络传输协议](https://blog.csdn.net/liusixsixsix/article/details/126399652)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [用yangwebrtc搭建兼容webrtc协议和支持嵌入式智能终端的多人视频会议](https://blog.csdn.net/m0_56595685/article/details/121304109)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值