MetaRTC-push推流客户端代码分析

本demo渲染使用opengl,音频采集使用alsa,视频采集使用v4l2+/dev/video。
在设计多个平台时,MetaRTC的源码和google的c++ webrtc源码都使用了工厂模式的方法,比如以下不同平台的视频采集为例子。YangVideoCaptureLinux是实现linux平台的,除此之外还有其他平台的类如win,android,os_apple等。他们通过工厂类生成返回给YangPushCapture类。
这里MetaRTC还模仿QT的run()和start()线程机制,实现了自己的YangThread类。比如在YangVideoCaptureLinux多重继承了YangThread,那么在YangVideoCaptureLinux类中重写startLoop()后,只要调用通过YangThread继承来的start()函数,就会另外开一个线程执行startLoop()内的函数。在MetaRTC中只要无法用QT的Thread的地方,都是用这种方式开的线程。
在这里插入图片描述
在这里插入图片描述以下是推流客户端的主要流程,从点击推流按钮,到开始采集AV数据,开始AV编码,开始建立推流连接推流,并自行渲染采集到的本地视频。
这里有两大线程特别重要,1.调用全局函数void yang_post_message(int32_t st, int32_t uid, YangSysMessageI mhandle,void user)将放入宏定义放入队列。2.另开线程调用void handleMessage(YangSysMessage *mss)函数根据不同的宏定义,分别执行开始video/screen采集,切换,推流whip/webrtc等(采集AV数据,AV编码,建立推流连接推流)。
理解了这两个线程,就能梳理这个demo的主框架。
在这里插入图片描述

如果想要去掉QT,改为cmake工程管理,把渲染部分去掉就可以。

下方是笔者微信,备注webrtc爱好者

  • 26
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

、、、、南山小雨、、、、

分享对你有帮助,打赏一下吧!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值