
音视频
文章平均质量分 83
恋上豆沙包
这个作者很懒,什么都没留下…
展开
-
WebRTC 通话原理
WebRTC通话原理STUN和TURNSTUN做了什么?告诉我你的公网IP地址+端口是什么。但是STUN并不是每次都能成功的为需要的NAT通话设备分配IP地址的。P2P使用本地带宽。多人视频通话的过程中,通话质量的好坏旺旺需要根据使用者本地的带宽确定。STUN干不了的,TURN干。STUN分配公网失败后,可以通过TURN服务器请求公网IP地址作为中级地址。这种方式的带宽由服务器端承担。WebRTC中经常用到2个协议,STUN和TURN服务器我们使用coturn开源项目来搭建。ICE(原创 2022-03-14 00:53:47 · 506 阅读 · 0 评论 -
WebRTC中的TURN
Turn协议工作原理Turn协议的工作原理主要有三个阶段,也称三大机制。分配(Allocation),转发(Relay)和信道(Channel)。分配Allocate请求: 客户端通过发送Allocate请求给STUN服务器,从而让STUN服务器为A用户开启一个relay端口。a) 客户端A向STUN Port发送Allocate请求(图中绿色部分)** b) **STUN服务器接收到客户端A的Allocate请求,服务器一看是Allocate请求,则根据relay端口分.原创 2022-03-14 00:50:19 · 1545 阅读 · 0 评论 -
WebRTC 数据安全
当 A 与 B 建立连接时,A 要带着它的用户名和密码过来,此时 B 端就可以通过验证 A 带来的用户名和密码与 SDP 中的用户名和密码是否一致的,来判断 A 是否是一个合法用户了。fingerprint也是验证合法性的关键一步,它是存放公钥证书的指纹(或叫信息摘要),在通过 ice-ufrag 和 ice-pwd 验证用户的合法性之余,还要对它发送的证书做验证,看看证书在传输的过程中是否被窜改了。从这张图中你可以看到, A 与 B 在传输数据之前,需要经历如下几个步骤。首先通原创 2022-03-12 15:29:17 · 6005 阅读 · 0 评论 -
WebRTC 源码分析
1.WebRTC的数据流如果视频数据帧率过多,则要将多余的帧丢掉。出来后的视频帧除了交给编码器编码外,还需要发送给本地渲染模块一份以进行本地预览。对音频来说,最主要的是进行3A处理。AEC(回波抵消)ANS(背景噪声抑制)AGC(自动增益控制)音频默认编码器是opus.视频默认VP8, 支持VP8,VP9,H264//以伪代码的方式进行逻辑梳理。socketpacket=recvfromNt();if(socketpacket==RTP){ if(socket..原创 2022-02-11 01:02:53 · 2807 阅读 · 0 评论 -
webRTC 中SDP
1 整个SDP中,只能有一个会话描述,而媒体描述可以有多个.通常SDP包含个媒体描述:一个音频媒体描述,一个视频媒体描述。除会话描述是对整个SDP起约束作用以外,各媒体描述之间的约束互不影响。1 v=02 o=- 3409821183230872764 2 IN IP4 127.0.0.1 3...4 m=audio 9 UDP/TLS/RTP/SAVPF 111 103 104 ... 5...6 a=rtpmap :111 opus /48000/27 a=rtpmap原创 2022-01-18 10:49:38 · 3642 阅读 · 0 评论 -
H264、H265 NALU结构、组帧
H264H264数据结构:在H264结构中,一个视频图像编码后的数据为一帧,一帧由一个片(slice)或多个片组成,一个片由一个或多个宏组成,一个宏块由16*16的YUV数据组成。宏块作为H264编码的基本单元。1.VCL video coding layer 视频编码层。2.NAL network abstraction lay 网络抽象层。VCL是对狠心算法引擎,块,宏块及片的语法级别的定义,它最终输出编码完的数据。NAL层定义片以上的语法级别(序列参数集和图像参数集,针对网络传原创 2022-01-12 01:18:02 · 2964 阅读 · 0 评论 -
STUN协议详解
1.概述STUN(session traversal utilities for NAT),一种处理NAT传输的协议,主要作为工具来服务其他协议。它允许位于NAT(或多重NAT后的客户端找出自己的公网地址,查出自己位于那种类型的NAT之后以及NAT为某一个本地端口所绑定的internet端口),这些信息被用来两个同时处于NAT路由器之后的主机之间建立UDP通信。目的就是找到外界连接内部地址所需的信息。2.STUN协议架构1.请求/响应(request/response)类型,由客户端给服务器原创 2022-01-06 01:38:16 · 6826 阅读 · 0 评论 -
RTP报头扩展
RTP HeaderRTP协议中,RTP Header(报头)包括固定报头(Fixed Header)与报头扩展(Header extension,可选)。RTP Fixed Header结构如下,其中前12字节是每个RTP包必须包含的。但是这Fixed Header携带的信息满足不了更复杂的需求。所以引入了RTP Header Extension,可以携带更多的信息。RTP Header Extension如果RTP Fixed Header中,X字段为1,说明后面跟着RTP Hea.原创 2022-01-04 00:41:33 · 2093 阅读 · 0 评论 -
FEC 前向纠错
FEC 提供概率修复,只有当丢包是非连续的数据包造成时,它才有可能纠正5%的包。不同接受方的丢包率肺部均匀,不可能用单一的FEC流满足所有的丢包率。奇偶校验FEC包格式版本号、有效负载类型、序列号和时间戳以通常的方式分配。根据使用的RTP配置文件 动态分配有效负载类型;每发送一个FEC包,序列号增加1;时间戳设置为在传送FEC包时RTP媒体时钟的值。(时间戳不太可能等于前后RTP包的时间戳。)因此,FEC包中的时间戳是单调增加的,与FEC方案无关。SSRC值与原始数据包的SSRC值相同.原创 2021-12-21 01:16:17 · 1938 阅读 · 0 评论 -
RTCP协议详解(SR、RR、SDES、BYE、APP、NACK、TCC、PLI、SLI、FIR )
RTCP协议规范中定义了五种类型的RTCP包:接收⽅报告(RR)、发送⽅报告(SR)、源 描述(SDES)、成员管理(BYE)和应⽤程序定义(APP)。SR: payload type=201RR:payload type=202SEDS:payload type=203BYE:payload type=204APP:payload type=205RTPFB:payload type=206PSFB:payload type=207版本号(V):对...原创 2021-11-30 01:36:06 · 13875 阅读 · 1 评论