C++/Qt音视频通话开发MetaRTC源码解读,音频推流和拉流

18 篇文章 7 订阅
订阅专栏

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

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

目录

  • 音频推流1,音频数据采集
  • 音频推流2,音频数据编码
  • 音频推流3,音频数据udp发送
  • 音频拉流1,udp接收音频数据
  • 音频拉流2,音频数据解码
  • 音频拉流3,音频数据播放

上一篇介绍了 视频推拉流,音频推拉流类似,需要注意音频的采集和播放是在同一个线程。
音频推流步骤:音频数据采集、编码、发送,分别在三个线程内完成;
音频拉流步骤:音频数据接收、解码、播放,分别在三个线程内完成;
注意,音频和视频数据的接收和发送都在同一个udp线程内完成。

音频推流1,音频数据采集

本例是ubuntu操作系统,音频采集和播放使用ALSA框架实现,分别定义采集snd_pcm_t和播放snd_pcm_t,使用snd_pcm_link做同步,采集和播放是在同一个线程内完成,定义在主类YangAlsaDeviceHandle下;
下图getRenderAudioData拉取接收和解码后的音频数据,alsa_device_write播放,putEchoPlay做 3A回音消除;
alsa_device_read读取麦克风数据,putEchoBuffer推到音频编码。
在这里插入图片描述

音频推流2,音频数据编码

音频数据buffer经过指针传递(认真读代码即可),传给音频编码线程YangAudioEncoderHandle,支持的编码方式包括opus、speex等,默认使用opus编解码。
在这里插入图片描述

音频推流3,音频数据udp发送

编码后的视频数据传递给YangP2pRtc发送线程,通过udp发送给对方。
在这里插入图片描述

音频拉流1,udp接收音频数据

使用和音频发送同一个udp接收,while循环接收音频数据,通过回调函数g_session_receive处理数据,把接收到的音频数据传递给YangP2pRtc(和上面音频数据发送在同一个类)。
在这里插入图片描述

音频拉流2,音频数据解码

音频数据buffer经过指针传递(认真读代码即可),传给音频编码线程YangAudioDecoderHandles,解码后音频数据推送到m_context->streams.m_playBuffers。
在这里插入图片描述

音频拉流3,音频数据播放

解码后的音频数据buffer传递给YangAudioRenderData::getRenderAudioData,由YangAlsaDeviceHandle::startLoop拉取播放,和音频采集在同一个线程内处理。
在这里插入图片描述

Qt/C++音视频开发53-本地摄像头推流/桌面推流/文件推流/监控推流
Qt/C++视频监控/推流/物联网/大屏系统/自定义控件/UI定制/输入法
09-15 926
编写这个推流程序,最开始设计的时候是用视频文件推流,后面陆续增加了监控摄像头推流(其实就是rtsp视频流)、网络电台和视频推流(一般是rtmp或者http开头m3u8结尾的视频流)、本地摄像头推流(本地USB摄像头或者笔记本自带摄像头等)、桌面推流(将当前运行环境的系统桌面抓拍推流)。
Qt/C++音视频开发80-ffmpeg实现srt推拉流/实时性非常好/音视频同步/支持格式众多
Qt/C++视频监控/推流/物联网/大屏系统/自定义控件/UI定制/输入法
07-31 1318
目前互联网上的视频直播有两种,一种是基于RTMP协议的直播,这种直播方式上行推流使用RTMP协议,下行播放使用RTMP,HTTP+FLV或者HLS,直播延时一般大于3秒,广泛应用秀场、游戏、赛事和事件直播,满足了对交互要求不高的场景;另一种是WebRTC协议的直播,这种直播方式使用UDP的协议进行流媒体的分发,直播延时小于1秒,同时连接数一般小于10个,主要应用在视频通话、秀场连麦等应用场景。
Qt音视频开发实战
06-25
课程摘要1 Qt音视频开发实战 是陈超老师用10年以上音视频一线实战开发经验,四年音视频开发教学经验打造的Qt音视频开发课程。2 Qt音视频开发实战以Qt c++开发为中心。所有课程全部围绕Qt音视频开发展开。3 非常适合那些只做Qt开发的工程师来学习,学习更容易一些。学习目标,培养高级Qt音视频开发工程师.4 Qt音视频开发实战适合那些掌握Qt基础开发,初级开发工程师,月薪在20k以下,通过学习,达到更高薪水的Qt高级开发工程师。 课程优势1 老师过去15年+ 音视频,网络通讯,数字图像处理一线实战经验。过去四年积累了丰富的音视频开发教学经验,学员从年薪30w~50w,就职于腾讯,阿里等各大互联网公司。2 老师10多年Qt开发经验,长期大量使用Qt开发项目,国内最早一批使用Qt的程序员。3 QQ 一对一教学指导,阶段性作业案例小项目指导,就业面试指导。 课程内容1 Qt 核心基础加强。对于那些学了很多年Qt开发而不得要领的学员非常友好。2 音视频开发基础。音视频原理,RGB YUV, 音频原理。图像压缩编码,音频压缩编码,H.264压缩,H.264编码原理 I P B SPS PPS解析,   视频存储容器,mp4 , AAC.  Qt音频视频采集,FFmpeg编码,解码,x264编码,AAC编码。mp3编码。格式转换。视频播放器内核。图像渲染。3 OpenGL数字图像处理基础。OpenGL基础,渲染管线,shader编程。滤镜,美颜,后期处理。编写渲染引擎。4 网络socket通讯编程,自定义私有协议。TCP/UDP音视频传输。 学员要求1 熟悉c/c++,掌握Qt基本控件,类基础。2 每天学习两小时,学习周期3~5个月,做完练习,小项目。
C++/Qt音视频通话开发MetaRTC源码解读,coturn穿透stun的使用
weixin_40355471的博客
09-23 2928
coturn服务器搭建,stun流程实现,stun穿透服务器使用,sdp交互,主叫穿透流程,被叫穿透流程,stun抓包wireshark,qt实现。
metaRTC 开源项目教程
最新发布
gitblog_01074的博客
08-08 871
metaRTC 开源项目教程 metaRTCA cross-platform webRTC SDK项目地址:https://gitcode.com/gh_mirrors/me/metaRTC 项目介绍 metaRTC 是一个跨平台的 webRTC SDK,专为嵌入式和物联网设备设计。它提供了纯 C 版本的 webRTC 实现,可以与谷歌的 webRTC 类库互通。metaRTC 支持多种音视频编...
C++/Qt音视频通话开发MetaRTC源码解读,视频推流和拉流
weixin_40355471的博客
09-12 5188
视频推流步骤:视频数据采集、编码、发送,视频拉流步骤:视频数据接收、解码、播放。采集使用V4L2框架,编解码使用H264,udp发送数据。opengl渲染视频数据,QT的UI主线程播放视频。
C++/Qt音视频通话开发MetaRTC源码解读,dtls交互流程,dtls抓包分析
weixin_40355471的博客
09-12 4146
dtls交互流程,dtls抓包分析,dlts详解,C/C++实现,基于Qt框架,MetaRTC开源代码,Client Hello,Server Hello,Certificate,Server Key Exchange,Certificate Request,Server Hello Done,Client Key Exchange,Certificate Verify,Change Cipher Spec,Application Data,Encrypted Alert,通知SRS结束推流
qt制作简易的视频通话
家俊的博客
06-07 2315
首先视频通话需要调用电脑的摄像头。 使用的类有QCamera,QCameraImageCapture QCamera用于调用电脑摄像头。QCameraImageCapture用于捕获当前摄像头的帧数QCameraImageCapture有一个信号imageCaptured,当触发这个信号,可以定义一个槽函数来捕获当前图片 定义一个image来进行捕获 这样图片就捕获到了。然后通过tcp进行传输。需要使用的2个类 QTcpSocket,QTcpServer socket用于进行通信。server用于监听接口
Qt/C++音视频开发42-网络推流(视频推流/本地摄像头推流/桌面推流/网络摄像头转发推流等)
Qt/C++视频监控/推流/物联网/大屏系统/自定义控件/UI定制/输入法
04-29 3041
上次实现的文件推流,尽管优点很多,但是只能对现在存在的生成好的音视频文件推流,而现在更多的场景是需要将实时的视频流重新推流分发,用户在很多设备比如手机/平板/网页/电脑/服务器上观看,这样就可以很方便的将分散的视频流统一集中的流媒体服务器上,然后统一对外分发视频,而不是全部从设备端取流,大大减轻了设备端的压力,流媒体服务器就专门干这个事情负责分发,功能单一不容易出错,支持的并发数量很高。
Qt/C++音视频开发72-倍速推流/音视频同步倍速推流/不改变帧率和采样率/低倍速和高倍速
Qt/C++视频监控/推流/物联网/大屏系统/自定义控件/UI定制/输入法
05-05 1294
最近多了个新需求,需要倍速推流推流界的扛把子obs也有倍速推流功能,最高支持到两倍速。这里所说的倍速,当然只限定在文件,只有文件才可能有倍速功能,因为也只有文件才能倍速解码播放。实时视频流是不可能倍速的,因为没有时长,有时长的才可以按照播放进度来。是否是文件也不能通过是不是本地文件等来判断,以为很多http/rtsp/m3u8等也可能是文件,具体最终的判断依据应该是有没有时长,能不能获取到时长,能获取到的就说明是文件。
qt制作的视频通话,实现双向视频电话
06-07
qt制作的简易视频通话工具。通过tcpsocket进行通信。使用qcamera来调用电脑摄像头。如没有摄像头则对方不可见。
C++视频聊天
04-07
C++视频聊天,MFC程序,有运行文件和说明,代码文件,齐全。
PJSIP---可以视频通话的库 c++
04-01
PJSIP---可以视频通话的库 c++
c++ 视频聊天
12-12
基于udp的视频聊天程序,运行客户端和服务器端程序后,客户端输入服务器端的ip,连接后可以实现视频通信。
C++实例——视频聊天系统
12-24
C++实例——视频聊天系统
Qt/C++音视频开发48-推流到rtsp服务器
Qt/C++视频监控/推流/物联网/大屏系统/自定义控件/UI定制/输入法
07-20 1232
之前已经打通了rtmp的推流,理论上按照同样的代码,只要将rtmp推流地址换成rtsp推流地址,然后格式将flv换成rtsp就行,无奈直接遇到协议不支持的错误提示,网上说要换成rtp,换了也没用,而且打印了ffmpeg库协议,也是支持的,以为用对应的命令行测试推流到rtsp流媒体服务器地址是可以的,用的是同样的动态库,所以完全排除库中没有编译该协议的问题,个人建议如果在编写ffmpeg程序过程中如果也有类似的怀疑,你可以用ffmpeg和ffplay命令行试试,如果命令行都不行,那肯定不行,毕竟ffmpeg可
metaRTC 传输opus 声音文件
superxxd的专栏
08-03 896
YangAudioEncoderBuffer2 其实就是 YangAudioEncoderBuffer2 ,只是我拷贝了YangVideoEncoderBuffer2 的内容改了一下叫法,第一步为我们应用层写缓存打下了基础,接下来,一定要搜一下out_videoBuffer ,凡是他干的,out_audioBuffer也干一遍,主要就是初始化和跟底层rtcsession的发送缓冲区建立联系。好了,欢迎各位大佬批评指正。慢慢的就会ctrl c +v了。好了,是不是很简单,主要是我只会ctrl c+v。....
C++/Qt音视频通话开发MetaRTC源码解读,sdp交互流程,sdp抓包
weixin_40355471的博客
09-10 2769
sdp交互框架,http服务监听,主叫sdp流程,被叫sdp流程,p2p视频通话,sdp交互得到对方的IP和端口,用于创建udp收发音视频数据,wireshark做sdp抓包。
QT教程】QT6音视频通信原理与实践 QT音视频
QT性能优化QT原理源码QT界面美化
05-10 915
QT6音视频通信概述QT6音视频通信概述在现代的软件开发中,音视频通信已经成为了应用非常广泛的功能。QT6作为一款功能强大的跨平台C++图形用户界面应用程序框架,也提供了对音视频通信的支持。在QT6中,音视频通信主要依赖于QMedia和QVideoGrabber等类库。本章将为您介绍QT6音视频通信的基本原理和实践方法。QT6音视频框架简介QT6音视频框架为开发者提供了一系列用于处理音视频数据的类和方法。这些类和方法可以方便地实现音视频的采集、编码、解码、播放、录制等功能。
qt/c++编写自定义控件源码
12-08
Qt/C++是一种开发桌面应用程序的跨平台开发框架,它提供了丰富的工具和类库,能够方便快捷地编写自定义控件源码。 首先,我们需要创建一个继承自QWidget或QFrame的类来实现自定义控件。在这个类中,我们可以重载...
写文章

热门文章

  • Qt发起http请求,get和post方式,并接收响应数据 20617
  • C++实现http发起GET/POST请求 15125
  • Qt实现记录日志文件log 11238
  • QT实现浏览器访问网页,使用QWebEngineView 10505
  • Qt在linux环境下调用动态库,pro工程文件加载库和QLibrary加载库两种方式 10454

分类专栏

  • linux/嵌入式 11篇
  • C/C++ 45篇
  • 音视频 18篇
  • 算法 2篇
  • QT 59篇
  • 开发知识 6篇
  • GO语言 39篇
  • MFC 2篇

最新评论

  • C++智能指针shared_ptr用法

    一个小脑袋: 博主很专业,文章写的很不错,学习下

  • windbg调试分析dump工具,使用windbg分析Qt崩溃原因

    今天努力工作了吗: 请问需要配置环境吗

  • Qt+ubuntu+ffmpeg环境搭建,ffmpeg库的编译与调用

    Tinsanglalala: 下载的那个编译好的库是不是不能直接用啊,我会报错:error: undefined reference to `x264_encoder_close'(类似这样的),问一下大佬怎么解决呀

  • QT实现经纬度转换为图片像素坐标

    去往火星: 博主,如果地图放大或者缩小呢,这个时候这种方法对吗

  • Qt+ubuntu+RabbitMQ环境搭建,qamqp库的编译与调用

    Heronsbill91: 没有api说明阿

大家在看

  • 【人工智能时代】- LLM技术全景图
  • Java数据库连接——JDBC 580
  • C语言的文件函数 830
  • 实战OpenCV之直方图
  • 免费领源码 springboot校园新闻数据化系统 计算机原创毕业设计

最新文章

  • arm平台常用工具和动态库编译
  • C语言网络库libevent浅析
  • C/C++高性能服务器网络库框架libhv源码解读
2024年7篇
2023年27篇
2022年63篇
2021年42篇
2020年29篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

天下网标王泸西网站优化哪家好潍坊奎文网站推广优化廊坊网站长尾词优化宣化网站优化怎么优化自己网站打开速度湛江地产网站优化嘉兴做网站优化的公司丰县网站优化哪家好长吉林省电梯公司春网站优化网站怎么优化推举火31星荐怎么优化网站排名推荐金手指网站整站优化排名易速达如何优化网站里择火3星温江关于网站优化网站的seo综合优化方案桂平网站关键词优化排名沧州网站优化推广铁岭网站优化与推广龙海网站的优化网站建设优化重庆优化网站兼职务川优化推广网站优化网站制作小玩具放心的网站推广优化网站优化标准肇庆外贸网站关键词优化工具大竹县网站seo优化排名网站关键词优化推广平台香河网站关键词优化效果企业网站怎么优化到首页香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声卫健委通报少年有偿捐血浆16次猝死汪小菲曝离婚始末何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言男子被猫抓伤后确诊“猫抓病”周杰伦一审败诉网易中国拥有亿元资产的家庭达13.3万户315晚会后胖东来又人满为患了高校汽车撞人致3死16伤 司机系学生张家界的山上“长”满了韩国人?张立群任西安交通大学校长手机成瘾是影响睡眠质量重要因素网友洛杉矶偶遇贾玲“重生之我在北大当嫡校长”单亲妈妈陷入热恋 14岁儿子报警倪萍分享减重40斤方法杨倩无缘巴黎奥运考生莫言也上北大硕士复试名单了许家印被限制高消费奥巴马现身唐宁街 黑色着装引猜测专访95后高颜值猪保姆男孩8年未见母亲被告知被遗忘七年后宇文玥被薅头发捞上岸郑州一火锅店爆改成麻辣烫店西双版纳热带植物园回应蜉蝣大爆发沉迷短剧的人就像掉进了杀猪盘当地回应沈阳致3死车祸车主疑毒驾开除党籍5年后 原水城县长再被查凯特王妃现身!外出购物视频曝光初中生遭15人围殴自卫刺伤3人判无罪事业单位女子向同事水杯投不明物质男子被流浪猫绊倒 投喂者赔24万外国人感慨凌晨的中国很安全路边卖淀粉肠阿姨主动出示声明书胖东来员工每周单休无小长假王树国卸任西安交大校长 师生送别小米汽车超级工厂正式揭幕黑马情侣提车了妈妈回应孩子在校撞护栏坠楼校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变老人退休金被冒领16年 金额超20万西藏招商引资投资者子女可当地高考特朗普无法缴纳4.54亿美元罚金浙江一高校内汽车冲撞行人 多人受伤

天下网标王 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化