C++/Qt音视频通话开发MetaRTC源码解读,sdp交互流程,sdp抓包

本文主要是介绍C++/Qt音视频通话开发MetaRTC源码解读,sdp交互流程,sdp抓包,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • sdp交互框架介绍
  • http服务监听
  • 主叫sdp流程
  • 被叫sdp流程
  • sdp抓包

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

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

本章解读sdp交互流程,关于sdp知识参考另一篇博文。

sdp交互框架介绍

由于MetaRTC只是一个demo,sdp交互比较简单,软件启动会建立一个http服务监听,http服务端口固定1988,界面输入对方IP;
主动点击推拉流的一方是主叫,主叫会组建自己的sdp,发起post给被叫的http服务,同步等待被叫回复被叫的sdp,收到被叫的sdp后解析;
另外一方是被叫,被叫的http服务端收到主叫的sdp后,解析sdp并回复自己的sdp给主叫。
整个sdp交互过程是http请求-响应过程。

p2p视频通话,sdp交互最重要的内容是得到对方的IP和端口,用于创建udp收发音视频数据。

http服务监听

程序启动,在YangP2pHandleImpl类构造函数创建和监听http服务,被叫会用到这个http服务,当收到主叫的sdp后使用g_p2p_receive回调。
在这里插入图片描述

主叫sdp流程

主叫在界面输入对方IP,点击推拉流按钮,开始sdp交互,主叫调用yang_http_post,这里是收发同步,yang_http_post第一个参数是出参,函数返回时拿到对方sdp。
在这里插入图片描述
获取被叫sdp后,解析sdp并创建udp用于音视频数据的收发,这里udp端口是每次程序启动随机生成的5位数。
在这里插入图片描述

被叫sdp流程

被叫的http服务端收到主叫的sdp后,执行回调函数g_p2p_receive,解析主叫sdp,创建自己的sdp作为出参使用http服务端回复给主叫。
在这里插入图片描述

sdp抓包

sdp交互过程是http请求-响应过程,wireshark抓包看比较清晰。
在这里插入图片描述

这篇关于C++/Qt音视频通话开发MetaRTC源码解读,sdp交互流程,sdp抓包的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/288208

相关文章

Redis与缓存解读

《Redis与缓存解读》文章介绍了Redis作为缓存层的优势和缺点,并分析了六种缓存更新策略,包括超时剔除、先删缓存再更新数据库、旁路缓存、先更新数据库再删缓存、先更新数据库再更新缓存、读写穿透和异步... 目录缓存缓存优缺点缓存更新策略超时剔除先删缓存再更新数据库旁路缓存(先更新数据库,再删缓存)先更新数

深入理解C++ 空类大小

《深入理解C++空类大小》本文主要介绍了C++空类大小,规定空类大小为1字节,主要是为了保证对象的唯一性和可区分性,满足数组元素地址连续的要求,下面就来了解一下... 目录1. 保证对象的唯一性和可区分性2. 满足数组元素地址连续的要求3. 与C++的对象模型和内存管理机制相适配查看类对象内存在C++中,规

基于Qt开发一个简单的OFD阅读器

《基于Qt开发一个简单的OFD阅读器》这篇文章主要为大家详细介绍了如何使用Qt框架开发一个功能强大且性能优异的OFD阅读器,文中的示例代码讲解详细,有需要的小伙伴可以参考一下... 目录摘要引言一、OFD文件格式解析二、文档结构解析三、页面渲染四、用户交互五、性能优化六、示例代码七、未来发展方向八、结论摘要

Java汇编源码如何查看环境搭建

《Java汇编源码如何查看环境搭建》:本文主要介绍如何在IntelliJIDEA开发环境中搭建字节码和汇编环境,以便更好地进行代码调优和JVM学习,首先,介绍了如何配置IntelliJIDEA以方... 目录一、简介二、在IDEA开发环境中搭建汇编环境2.1 在IDEA中搭建字节码查看环境2.1.1 搭建步

SpringBoot使用minio进行文件管理的流程步骤

《SpringBoot使用minio进行文件管理的流程步骤》MinIO是一个高性能的对象存储系统,兼容AmazonS3API,该软件设计用于处理非结构化数据,如图片、视频、日志文件以及备份数据等,本文... 目录一、拉取minio镜像二、创建配置文件和上传文件的目录三、启动容器四、浏览器登录 minio五、

在 VSCode 中配置 C++ 开发环境的详细教程

《在VSCode中配置C++开发环境的详细教程》本文详细介绍了如何在VisualStudioCode(VSCode)中配置C++开发环境,包括安装必要的工具、配置编译器、设置调试环境等步骤,通... 目录如何在 VSCode 中配置 C++ 开发环境:详细教程1. 什么是 VSCode?2. 安装 VSCo

python与QT联合的详细步骤记录

《python与QT联合的详细步骤记录》:本文主要介绍python与QT联合的详细步骤,文章还展示了如何在Python中调用QT的.ui文件来实现GUI界面,并介绍了多窗口的应用,文中通过代码介绍... 目录一、文章简介二、安装pyqt5三、GUI页面设计四、python的使用python文件创建pytho

通过C#和RTSPClient实现简易音视频解码功能

《通过C#和RTSPClient实现简易音视频解码功能》在多媒体应用中,实时传输协议(RTSP)用于流媒体服务,特别是音视频监控系统,通过C#和RTSPClient库,可以轻松实现简易的音视... 目录前言正文关键特性解决方案实现步骤示例代码总结最后前言在多媒体应用中,实时传输协议(RTSP)用于流媒体服

C#图表开发之Chart详解

《C#图表开发之Chart详解》C#中的Chart控件用于开发图表功能,具有Series和ChartArea两个重要属性,Series属性是SeriesCollection类型,包含多个Series对... 目录OverviChina编程ewSeries类总结OverviewC#中,开发图表功能的控件是Char

QT实现TCP客户端自动连接

《QT实现TCP客户端自动连接》这篇文章主要为大家详细介绍了QT中一个TCP客户端自动连接的测试模型,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录版本 1:没有取消按钮 测试效果测试代码版本 2:有取消按钮测试效果测试代码版本 1:没有取消按钮 测试效果缺陷:无法手动停