webrtc源码之nack&&rtx详解

webrtc源码之nack&&rtx详解,第1张

1、nack协商

m=video 9 RTP/AVPF 96 97 98 99 100 101127 122 108 109 123

a=rtpmap:96 H264/90000

a=rtcp-fb:96 goog-remb

a=rtcp-fb:96 transport-cc

a=rtcp-fb:96 ccm fir

a=rtcp-fb:96 nack

a=rtcp-fb:96 nack pli

a=fmtp:96 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f

a=rtpmap:97 rtx/90000

a=fmtp:97 apt=96

video协商为h264(payload type=96)

从sdp可得到:

1)profile-level-id=42001f

      Profile: 66(hex: 42)

      Level: 31(hex:1f)转成十进制,再除以10

2)packetization-mode=1

   表示I帧会拆分成多个rtp包发送,对于264来说,rtppayload的第一个字节(0x7C)的低5bit为(11100),十进制为28,代表此nalutype为FU-A,多包封装类型。

3)RTP/AVPF

   AVPF中的F表示支持RTCP的传输层保护,S表示安全保护(SRTP)

4) a=fmtp:97 apt=96

   表示96类型的rtp包的重传包采用97的payloadtype的rtx包保护,rtx包的rtp header中的sequence num与rtp不一致,但timestamp一致。

   Rtx包的payload的前两个字节为原重传rtp包的rtp sequencenum

2、webrtcpeerconnection_client项目修改项

1)去掉srtp

    a) peerconnectionFactory的setOption接口关闭 encryption选项

      webrtc::PeerConnectionFactoryInterface::Optionsoptions;

   optionsdisable_encryption=true;

  peer_connection_factory_->SetOptions(options);

  b) peer_connection_factory_->CreatePeerConnection接口关闭dtls srtp选项

 webrtc::PeerConnectionInterface::RTCConfigurationconfig;

 configsdp_semantics = webrtc::SdpSemantics::kUnifiedPlan;

 configenable_dtls_srtp= false;

2)去掉FEC

增加关闭FEC的参数

webrtc::field_trial::InitFieldTrialsFromString(FLAG_force_fieldtrials)

FLAG_force_fieldtrials = WebRTC-DisableUlpFecExperiment/Enabled/

3、wireshark抓包分析

1)rtx_rtppcapng为20%随机丢包下的webrtc p2p抓包

过滤条件:(ipsrc==10258112 and(rtpp_type==96 or rtpp_type==97)) or (rtcp and ipdst==10258112 andrtcprtpfbfmt == 1)

rtcprtpfbfmt == 1代表nack报文

2)nack报文结构

81 cd 00 03 a5 1f d8 4a 52 5e 1a 85 34 0f 00 00

a) rtcp header 4bytes(81 cd 00 03)

   100 00001 (81)第一个字节

      高2 bit(10)为vesion应为2

   1bit表示rtcp是否补齐(padding) 0为不需要补齐,为1时,rtcp payload的最后一个字节的值为 paddingsize

  5bit表示rtcp feedback message type(fmt)值为1

     11001101 (cd)第二个字节

   第二个字节表示packet type,值为205

  Packet type(205)和fmt(1)确定此报文为nack报文

   (00 03)第三、四字节

   第三个字节表示rtcp的长度(不包括rtcp header的4 bytes)nack报文长度恒为16(34+4)

b) Nack payload(a5 1f d8 4a 52 5e 1a 8534 0f 00 00)

  4 bytes sender SSRC(a5 1f d8 4a),发送RTCP的track的rtp ssrc,如果为(recvonly),此值为0

  4 bytes media source SSRC(52 5e 1a 85),请求重传包对应的rtp ssrc

  2 bytes rtcp transport feedback nack pid(34 0f),确定丢包的起始rtp sequenceNum(13327)

  2 bytes rtcp transport feedback nack bitmask(0000),由起始pid开始的16个包组的丢包情况,此值是转成binary的掩码,bit为1表示丢包,00 00表示只有pid对应的包丢失。

3)rtx重传包

Rtx原理:重发的包封装到RTX包里发送,RTX包与原RTP有不同的SSRC,不同的rtpseq,但是timestamp与丢失包的时间戳相同。

  Rtx优势:rtp重传包在带宽估计时不计入运算,使用rtx比较方便,不使用rtx统计丢包率有时会出现负值

   Rtxpayload:前两个字节代表丢失包的rtp seq,因此rtx包比丢失的rtp包多2个字节

4)webrtc中rtp发送端处理RTCP NACK报文过程见“发送端处理RTCPNACK报文过程pdf”

5)webrtc中rtp接收端发现丢包,并发送nack请求过程见“rtp接收端发送nack过程pdf”

文档资料和抓包如果需要的话,可留邮箱。

1、RTX是是腾讯公司推出的企业级实时通信平台,致力于帮助企业提高运作效率、降低沟通成本、拓展商业机会,这是一种高度可管理、低成本、易部署的IT平台。

2、RTX集成了丰富的沟通方式,包括文本会话、语音/视频交流、手机短信、文件传输、IP电话、网络会议、以及程序共享、电子白板等远程协作方式。

rtx指腾讯RTX。

腾讯通RTX是(Real Time eXchange)是腾讯公司推出的企业级实时通信平台,致力于帮助企业提高运作效率、降低沟通成本、拓展商业机会,是一种高度可管理、低成本、易部署的IT平台。

RTX集成了丰富的沟通方式,包括文本会话、语音/视频交流、手机短信、文件传输、IP电话、网络会议、以及应用程序共享、电子白板等远程协作方式。

作用:

企业中,畅顺的沟通对生产效率、管理质量起到至关重要的作用。在异步通信已无法满足办公需求的形式下,好的即时沟通平台,能够帮助实现高效沟通。

腾讯通RTX是腾讯公司推出的企业级即时通信平台。企业员工可以轻松地通过服务器所配置的组织架构查找需要进行通讯的人员,并采用丰富的沟通方式进行实时沟通。文本消息、文件传输、直接语音会话或者视频的形式满足不同办公环境下的沟通需求。

 rtx一般指RTX腾讯通。

腾讯通RTX是(Real Time eXpert)是腾讯公司推出的企业级实时通信平台,致力于帮助企业提高运作效率、降低沟通成本、拓展商业机会,这是一种高度可管理、低成本、易部署的IT平台。

RTX集成了丰富的沟通方式,包括文本会话、语音/视频交流、手机短信、文件传输、IP电话、网络会议、以及程序共享、电子白板等远程协作方式。

严重问题修改:

1、解决SDK同步大量用户数据时出错(time_wait错误)。

2、解决选中多个文件右键菜单打开d出RTX选择联系人窗口问题。

3、解决插件嵌入"第三方设置",在Win7下无法启动插件问题。

4、解决RCAServer堆栈溢出问题。

5、解决RTX管理器删除群后,客户端不会消失问题。

不能。

。发文件不是说你只要拉到对话框文件就立马发出去了,他也是有一个运营过程的,而且跟你自己的网速也有很大的关系,如果你的网速不好是没办法发出,而且你立马关机电脑都不运行了没办法发。

以上就是关于webrtc源码之nack&&rtx详解全部的内容,包括:webrtc源码之nack&&rtx详解、rtx是什么意思 rtx具体是什么意思、rtx是什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10074950.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存