实时通信基本原理

  • 在线教育、音视频会议这类直播属于实时互动直播,主要考虑传输的实时性,因此一般使用 UDP 作为底层传输协议

    • 而娱乐直播对实时性要求不高,更多关注的是画面的质量、音视频是否卡顿等问题,所以一般采用 TCP 作为传输协议
  • 编码帧

    • I 帧:关键帧
      • 压缩率低,可以单独解码成一幅完整的图像。
    • P 帧:参考帧
      • 压缩率较高,解码时依赖于前面已解码的数据。
    • B 帧:前后参考帧
      • 压缩率最高,解码时不光依赖前面已经解码的帧,而且还依赖它后面的 P 帧。换句话说就是,B 帧后面的 P 帧要优先于它进行解码,然后才能将 B 帧解码
  • 共享桌面原理

    • 对于共享者,每秒钟抓取多次屏幕(可以是 3 次、5 次等),每次抓取的屏幕都与上一次抓取的屏幕做比较,取它们的差值,然后对差值进行压缩。再将压缩后的数据通过传输模块传送到观看端;数据到达观看端后,再进行解码,这样即可还原出整幅图片并显示出来
    • 对于远程控制端,当用户通过鼠标点击共享桌面的某个位置时,会首先计算出鼠标实际点击的位置,然后将其作为参数,通过信令发送给共享端。共享端收到信令后,会模拟本地鼠标,即调用相关的 API,完成最终的操作

实时通信架构

img

img

协议

(S)RTP/(S)RTCP协议

  • 实时互动直播系统的时候必须使用UDP 协议

    • 因为如果网络不好,TCP的重传算法是指数回退的,极端情况下会导致1分钟以上的传输延迟,这对于实时通信系统是无法接受的
  • 在实时互动直播系统传输音视频数据流时,我们并不直接将音视频数据流交给 UDP 传输,而是先给音视频数据加个 RTP 头,然后再交给 UDP 进行传输

    • 因为音视频帧的大小远大于UDP的最大传输单元(1.5KB左右),需要对分帧的包进行标记
      • 例如I帧一般会有几十KB,这样就需要传输几十的UDP包到终点并重新组装成I帧并解码
    • 一般来说需要序号,起始和结束标记这几个字段
  • RTP包头字段

    • sequence number:序号,用于记录包的顺序
    • timestamp:时间戳,同一个帧的不同分片的时间戳是相同的
      • 这样就省去了前面所讲的起始标记结束标记,因为不同帧的时间戳肯定是不一样的
    • PT:Payload Type,数据的负载类型
      • 音频流的 PT 值与视频的 PT 值是不同的,通过它就可以知道这个包存放的是什么类型的数据

img

  • RTCP协议用于确定网络链路质量
    • RTCP 有两个重要的报文:RR(Reciever Report)SR(Sender Report)
    • 通过这两个报文的交换,各端就知道自己的网络质量到底如何了
  • RTP/RTCP 协议并没有对它的负载数据进行加密
    • 因此,如果你通过抓包工具,如 Wireshark,将音视频数据抓取到后,通过该工具就可以直接将音视频流播放出来
    • 为了防止这类事情发生,没有直接使用 RTP/RTCP 协议,而是使用了 SRTP/SRTCP 协议 ,即安全的 RTP/RTCP 协议

SDP协议

  • SDP就是用文本描述的各端(PC 端、Mac 端、Android 端、iOS 端等)的能力,用来进行媒体协商

    • 这里的能力指的是各端所支持的音频编解码器是什么,这些编解码器设定的参数是什么,使用的传输协议是什么,以及包括的音视频媒体是什么等等
    • 通信双方可以根据各自的能力进行协商,协商出大家认可的音视频编解码器、编解码器相关的参数(如音频通道数,采样率等)、传输协议等信息
  • SDP信息的交换是通过信令服务器完成的

    • 通信双方都要先与信令服务器建立websocket连接,之后通过服务器转发
  • 通信中断重连时要重新进行媒体协商

  • 多方通信时,新用户加入时,可以获得先前加入用户的音视频流,但是老用户无法获取新用户的流

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值