C++/Qt音视频通话开发MetaRTC源码解读,coturn穿透stun的使用

这篇具有很好参考价值的文章主要介绍了C++/Qt音视频通话开发MetaRTC源码解读,coturn穿透stun的使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本章内容解读MetaRTC开源代码,无任何二次开发,用于学习交流。

MetaRTC是国人开发的开源项目,适用各种场景音视频二次开发,可以去git阅读README,我们使用相对成熟的版本测试: Release v5.0-b4。

之前的demo是在同一个局域网的条件下,sdp交换IP和端口后就可以收发音视频数据了,但是如果两个用户是在不同的局域网,不能再使用局域网的IP进行直接通信,就要用到穿透和中继;

MetaRTC当前版本支持coturn服务器的stun(穿透)和turn(中继)功能,在p2p音视频通话中这两个功能至关重要;
穿透可以得到自己的公网IP和端口,然后通过sdp交互给对方,使用穿透的公网IP和端口进行p2p音视频通话;
中继是在穿透失败的情况下,通过中继进行转发。

关于coturn服务器的搭建和使用,以及当前网络是否可以穿透参考:Qt实现coturn穿透客户端,coturn服务器搭建。
本章介绍coturn服务器的stun穿透功能。

相关配置

yang_config.ini配置文件关注如下字段:

[rtc]
enableDatachannel=0
iceUsingLocalIp=0//0不使用本机IP,使用stun穿透得到的IP
iceLocalIP=192.168.3.46//如果iceUsingLocalIp!=0,则使用这个IP作为本机IP
iceCandidateType=1//ice候选类型,0(YangIceHost)本机,1(YangIceStun)穿透,2(YangIceTurn)中继
iceServerPort=3478//coturn服务器port
iceServerIP=192.168.3.47//coturn服务器IP
iceUserName=metartc//ice用户名
icePassword=metartc//ice密码

主叫穿透流程

主流穿透程如下,主叫点击推拉流,createOffer创建sdp时根据iceUsingLocalIp==0判断进行穿透,穿透时使用随机的port创建一个临时udp,向coturn服务器发起穿透请求,使用接口yang_ice_stun_request。
C++/Qt音视频通话开发MetaRTC源码解读,coturn穿透stun的使用

如果穿透成功,coturn回复消息,使用g_yang_ice_stun_receive接收,并解析穿透得到的IP和端口(有时穿透得到的端口就是上面发起stun请求的udp端口),用于穿透的udp释放。
C++/Qt音视频通话开发MetaRTC源码解读,coturn穿透stun的使用
拿到穿透的IP和端口,用于创建sdp(yang_sdp_genLocalSdp2),发送给对方,对方在使用udp推送音视频流的时候就往这个IP和端口发送。
C++/Qt音视频通话开发MetaRTC源码解读,coturn穿透stun的使用

被叫穿透流程

被叫起呼的流程略不同,最后也是调用yang_ice_stun_request发起stun请求,后面的流程一样,获取穿透IP和端口后通过sh->createHttpAnswer(&sh->peer,answer)创建并赋值给自己的sdp,回传给对方。
C++/Qt音视频通话开发MetaRTC源码解读,coturn穿透stun的使用

stun抓包

STUN(Session Traversal Utilities for NAT,NAT会话穿越应用程序)是一种网络协议,可以使用wireshark抓包,筛选关键字stun。
C++/Qt音视频通话开发MetaRTC源码解读,coturn穿透stun的使用文章来源地址https://www.toymoban.com/news/detail-417040.html

到了这里,关于C++/Qt音视频通话开发MetaRTC源码解读,coturn穿透stun的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Qt音视频开发45-音视频类结构体参数的设计

    视频监控内核组件重构和完善花了一年多时间,整个组件个人认为设计的最好的部分就是各种结构体参数的设计,而且分门别类,有枚举值,也有窗体相关的结构体参数,解码相关的结构体参数,同时将部分常用的结构体参数的获取和设置单独提供了函数,参阅海康大华等大

    2024年02月05日
    浏览(75)
  • Android之 集成音视频通话

    一,背景 1.1 最近接收一个即时通讯二开项目,即时通讯部分用的XMPP协议,音视频则是集成的国外的开源免费库jitsi-meet-sdk-2.4.0-4.aar,是基于WebRTC的开源框架。但客户想要微信那种页面的排版,后来经研究jitsi是不能修改UI的,UI部分是用混合框架ReactNative写的,这样难度就大了

    2024年02月12日
    浏览(65)
  • 音视频实时通话解决方案

    想要实现音视频通话,对于大部分人可能会觉得很难,但是实际上,有些事情并没有大家想的那样困难,只要功夫深,铁杵磨成针。 机缘巧合下,在业务中,我也遇到了一个业务场景需要实现音视频通话,我们不可能自己从零开始干,我本次用到的核心是WebRTC。 WebRTC (Web R

    2024年02月12日
    浏览(49)
  • 技术分享| 小程序实现音视频通话

    上一期我们把前期准备工作做完了,这一期就带大家实现音视频通话! 为了更好的区分功能,我分成了六个 js 文件 config.js 音视频与呼叫邀请配置 store.js 实现音视频通话的变量 rtc.js 音视频逻辑封装 live-code.js 微信推拉流状态码 rtm.js 呼叫邀请相关逻辑封装 util.js 其他方法

    2024年02月02日
    浏览(58)
  • WebRTC音视频通话-RTC直播本地视频及相册视频文件

    WebRTC音视频通话-RTC直播本地视频及相册视频文件 WebRTC音视频通话-RTC直播本地视频文件效果图如下 WebRTC音视频通话-RTC直播本地视频文件时候,用到了AVPlayer、CADisplayLink。 AVPlayer是什么? AVPlayer是基于AVFoundation框架的一个类,很接近底层,灵活性强,可以自定义视频播放样式

    2024年02月13日
    浏览(51)
  • Qt/C++音视频开发46-音视频同步保存到MP4

    用ffmpeg单独做视频保存不难,单独做音频保存也不难,难的是音视频同步保存到MP4中,重点是音视频要同步,其实这也不难,只要播放那边音视频同步后的数据,写入到文件即可。最难的是在播放过程中不断随机的切换播放进度,而且还会暂停播放、暂停录制的情况出现,这

    2024年02月17日
    浏览(72)
  • WebRTC音视频通话-WebRTC视频自定义RTCVideoCapturer相机

    WebRTC音视频通话-WebRTC视频自定义RTCVideoCapturer相机 在之前已经实现了WebRTC调用ossrs服务,实现直播视频通话功能。但是在使用过程中,RTCCameraVideoCapturer类提供的方法不能修改及调节相机的灯光等设置,那就需要自定义RTCVideoCapturer自行采集画面了。 iOS端WebRTC调用ossrs相关,实现

    2024年02月12日
    浏览(62)
  • Web网页音视频通话之基于Sipjs

    简述 本文是以 FreeSwitch 作为信令服务器,通过sipjs(基于webRtc) 进行媒体协商,网络协商后,进行P2P媒体传输。 参考知识: sip.js https://sipjs.com/ webRtc开发手册 https://developer.mozilla.org/zh-CN/docs/Web/API/WebRTC_API 效果图 : HTML javaScript operation.js 拨打 接听 通话中

    2023年04月17日
    浏览(52)
  • web 前端实现音视频通话 - liveKit 框架

    go1.18以上 liveKit-server.exe liveKit官方文档链接 科学上网(github) 在liveKit 中有两个概念,分别是:room 房间 和 user 用户 房间很好理解,类似一个腾讯会议中的 一个会议 用户指的是 加入房间的所有人。 每个用户的权限是相同的 想要实现主持人功能,可以通过web服务器来对liveKi

    2024年04月14日
    浏览(50)
  • WebRTC音视频通话-实现GPUImage视频美颜滤镜效果iOS

    WebRTC音视频通话-实现GPUImage视频美颜滤镜效果 在WebRTC音视频通话的GPUImage美颜效果图如下 可以看下 之前搭建ossrs服务,可以查看:https://blog.csdn.net/gloryFlow/article/details/132257196 之前实现iOS端调用ossrs音视频通话,可以查看:https://blog.csdn.net/gloryFlow/article/details/132262724 之前WebR

    2024年02月12日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包