5G时代-WebRTC音视频高级开发

2023-09-19 10:52:29 来源: 简易百科 阅读量:7702   

目录

1,自定义摄像头分辨率

2,码率限制

3,调整编码器顺序

4,Mesh模型多方通话

5,Janus框架分析

6,Janus Web源码分析

7,Janus Android源码分析

8,基于Janus实现会议系统

自定义摄像头分辨率

一、videocapture类的介绍

1、Class for video capturing from video files, image sequences or cameras.

2、The class provides C++ API for capturing video from cameras or for reading video files and image sequences.

二、参数设置函数 set 函数的使用

1、代码

//

#include quot;cartoon.hquot;

int main

VideoCapture capture;

if ) //判断能够打开摄像头

coutlt;lt;quot;can not open the cameraquot;lt;lt;endl;

cin.get;

exit;

capture.set;

capture.set;

int count=0;

while

Mat frame;

capturegt;gt;frame; //载入图像

if ) //判断图像是否载入

coutlt;lt;quot;can not load the framequot;lt;lt;endl;

else

count++;

if

coutlt;lt;frame.colslt;lt;quot; quot;lt;lt;frame.rowslt;lt;endl;

imshow;

char c=waitKey; //延时30毫秒

if //按ESC键退出

break;

//

码率控制算法

码率控制算法根据视频应用要求与目的的不同可分为以下两种,

第一种

是恒定比特率 CBR的码率控制算法, CBR 的输入不仅要有视频源, 还要另外设置一个目标比特率。它能够动态地调节量化参数,主要依据是不同视频的内容复杂度差异、网络带宽的不同和解码缓冲区的大小等, 使得在给定的码率限制下, 图像的质量最佳。编码过程中, CBR 的码率围绕着目标码率基本不变。

第二种

是可变比特率 VBR 的码率控制算法, VBR 的输入当然也要包括视频源, 此外还要设置量化参数 QP。输出的比特率会在一定范围内变化, 原因有很多, 比如实际视频序列中的图像内容复杂度的差异, 又比如运动的快慢不同等, 所以在传输信道有波动的条件下常常使用 VBR 算法。

调整编码器顺序

一、视频编码格式初始配置

webrtcmediaengineinternalencoderfactory.cc

按照Push顺序,优先选取第一个编解码格式。

二、视频分辨率初始配置

webrtcpcvideocapturertracksource.cc

选取的原则是,在kVideoFormats里面找参数与kDefaultFormat默认值最接近的一组参数,作为本端的编码能力。

三、视频码率默认值

webrtcmediaenginewebrtcvideoengine.cc

EncoderStreamFactory::CreateEncoderStreams

四、默认QP、帧率最大值配置

webrtcmediaenginewebrtcvideoengine.cc

static const int kDefaultQpMax = 56;

const int kDefaultVideoMaxFramerate = 60;

五、使能SRTP

webrtcsrcwebrtcapipeerconnectioninterface.h

disable_encryption = true 取消SRTP

disable_encryption = false 开启SRTP

配置密钥:

bool Conductor::CreatePeerConnection配置是否生成密钥。

六、生效新的帧率码率流程

在webrtc里面函数实现如下:

-gt;VideoStreamEncoder::EncodeVideoFrame-gt;VideoSender::AddVideoFrame-

在这个函数中读取全局变量encoder_params_,判断是否需要调整视频参数。-gt;VideoSender::SetEncoderParameters

-gt;VCMGenericEncoder::SetEncoderParameters

-gt;H264EncoderImpl::SetRateAllocation传递新的帧率码率到编码器。

七、H264打包模式

codec.cc VideoCodec::SetDefaultParameters

Janus框架分析模块结构

本文介绍的Janus版本为0.6.0。

上图是Janus主要的模块结构,有一些通用工具模块这里没有列出。

媒体模块

Janus不是简单转发WebRTC的媒体流,还有一定的控制能力,因此需要支持WebRTC的媒体能力,其媒体功能包含以下基本模块:

ICE:打洞,负责与Peer的连通,Janus可以部署在NAT后面,使用了libnice;

DTLS:UDP版的TLS,就是加密的UDP,WebRTC用来传递SRTP的密钥,使用了OpenSSL/BoringSSL;

RTP/RTCP:提供RTP/RTCP封/解包的接口,需要发送一些WebRTC支持的RTCP包,例如FIR、PLI、RR等;

SRTP:加密的RTP,开启后WebRTC传输的RTP负载都是加密的;

SDP:提供SDP封/解包的接口,用于协商媒体的协议,可以用SDP对WebRTC的一些功能进行设定;

SCTP:WebRTC的数据通道使用的协议,就是加上了流控的UDP,可以传输任意数据。

信令模块

除了媒体协议,Janus还要提供信令交互的协议,传统的信令协议有SIP、XMPP等,Janus上的信令应用协议可以定制,底层主要的传输协议有

WebSocket;

MQTT;

NanoMsg;

RabbitMQ。

Janus Web源码分析

总结;需要资料的可以关注+私信lsquo;资料rsquo;可以送大家 一起学习

对于自然界中的音频信号,如果转换成数字信号,进行音频编码,那么只能无限接近,不可能百分百还原。所以说实际上任何信号转换成数字信号都会有损。但是在计算机应用中,能够达到最高保真水平的就是PCM编码。因此,PCM约定俗成了无损编码。我们而习惯性的把MP3列入有损音频编码范畴,是相对PCM编码的。强调编码的相对性的有损和无损

声明:本网转发此文章,旨在为读者提供更多信息资讯,所涉内容不构成投资、消费建议。文章事实如有疑问,请与有关方核实,文章观点非本网观点,仅供读者参考。

精选 导读

大摩:苹果产量或超预期增长,预计Q1业绩有“惊喜”

摩根士丹利分析师KatyHuberty指出,苹果本季度iPhone产量可能超预期增长,因为交货周期正在下降到“更正常的水平”。该分析师预计苹...

发布时间: 2021-12-23 17:04
行情   2021-12-23

中金:维持石四药集团跑赢行业评级目标价5.8港元

中金发布研究报告称,维持石四药集团“跑赢行业”评级,保持2021/22年归母净利润预测7.9/11.64亿元不变,目标价5.8港元。报告中称...

发布时间: 2021-12-23 17:03
行情   2021-12-23

实探中装建设元宇宙合作方鸿蒙时代:与华为无关已搬离注册地

12月22日,深交所对中装建设发布关注函,要求说明公司是否存在“楼宇智能大数据信息处理、AI可视化、元宇宙应用、智能建造系统、区块链等技术”...

发布时间: 2021-12-23 17:02
行情   2021-12-23

“疫”线女将:眼里有光心中有爱

“疫”线女将:眼里有光心中有爱题:“疫”线女将:眼里有光心中有爱曾灯光璀璨、游人如织的边陲小城因新冠疫情的再次暴发按下“暂停键”。内蒙古自治...

发布时间: 2021-12-23 16:48
要闻   2021-12-23

联通网络智能运维产品研发招标:华为、中软等11家企业入围

中国联通日前正式公布网络智能运维产品研发招标结果,华为、中软、软通动力、亚信科技等11家企业入围。传统网络故障的被动处理方式,从故障感知到信...

发布时间: 2021-12-23 16:35
酷玩   2021-12-23

热点 推荐

小米12Pro自研智能动态刷新率演示视频公布:支持新技能“滑动变速”,更

今日上午,小米手机官方表示,小米自研智能动态刷新率,是第二代低功耗2K屏幕的创新体验,第一次让小米12Pro拥有了滑动变速的新技能。小米表示...

发布时间: 2021-12-23 16:31
酷玩   2021-12-23

增速惊人!鸿蒙用户量半年突破2.2亿

C114讯12月23日下午消息在今日举办的华为动机旗舰新品发布会上,华为常务董事、消费者BGCEO、智能汽车解决方案BUCEO余承东公布了鸿...

发布时间: 2021-12-23 16:26
酷玩   2021-12-23

用户群聊从线上走到线下他趣成年轻群体社交困境破局者

伴随当下工作和生活节奏越来越紧凑,婚恋、交友等社交需求逐渐成为年轻人的刚性需求。为满足日益提升的社交需求,他趣用户从线上延伸到线下,通过组织...

发布时间: 2021-12-23 14:59
机器人   2021-12-23

京东会展云“云上服贸会”项目入选中国信通院“2021年数字孪生城市典型案

近日,2022中国信通院ICT+深度观察报告会隆重举办,京东会展云技术支持的中国国际服务贸易交易会数字平台项目入选“2021年数字孪生城市典...

发布时间: 2021-12-23 14:56
机器人   2021-12-23

华为Mate9手机推送鸿蒙HarmonyOS2.0.0.140:新增桌面

华为Mate9手机开始推送鸿蒙HarmonyOS2.0.0.140更新。更新包1优化了音量等基础体验,并新增了桌面图标放大功能。更新包2修复...

发布时间: 2021-12-23 14:41
机器人   2021-12-23
bd9