前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RIST介绍

RIST介绍

原创
作者头像
荆腾
修改2022-01-26 15:13:50
1.4K0
修改2022-01-26 15:13:50
举报
文章被收录于专栏:音视频协议音视频协议

RIST背景

RIST,全称Reliable Internet Stream Transport,目的是打造一个可信赖的互联网流媒体协议,在弱网情况下保证数据流的可靠传输,并作为一个开源的协议可以在某些场景下作为商业版的ZIXI等可靠协议传输替代者。

RIST工作组成立于2017年,并于2018年发布第一份协议草案,最初的Simple Profile。自此之后,RIST协议持续更新,保存快速进化,并于2016年发布了RT-06-03版本,最新的Advanced Profile。

RIST协议

RIST协议目前发布了3个不同的协议版本:

Simple Profile:

Simple Profile是简易配置协议,于2018年10月发布,它基于RTP和RTCP协议,对于从RTP协议迁移过去的场景比较顺畅。Simple Profile基于ARQ(Automatic Repeat-reQuest)和 NACK(Negative Acknowledgment)机制实现可靠传输,并支持多个链路并行传输。

Main Profile:

Main Profile是主配置协议,于2020年3月发布,它在Simple Profile的基础上,增加了多路复用功能,多个流可以共用同一个传输隧道,还提升了基于TLS的传输安全性,并支持更高码率的数据流,并做了一定的多余空包优化。

Advanced Profile:

Advanced Profile是高级配置协议,于2021年10月发布,它提供了一个新的受保护的隧道模式,可以承载任何传统协议,比如MPEG TS over UDP。并且仅需要使用一个UDP端口,简化了端口占用。

RIST简单交互过程

RIST的核心使用了编码端的buffer、解码端的buffer、NACK重传机制来保证整个交互过程可靠。

1. 编码端会在数据包发送到internet时,把数据保存一份副本到本地bufer中,此缓冲区是异步保存,不会增加端到端延时。

2. 网络传输没有限制,可以使用单播,多播,多链路,传输均可。

3. 解码端负责大部分逻辑处理。

解码端收到数据包后,会将它们放到一个接收缓冲区中,并且按RTP协议的sequence num排好序。

该接收缓冲区的长度需要至少与收发两端的最好和最坏RTT差值相当,并增加适当的余量以应对网络抖动时的数据包重传和排序。

接收端会分析RTP数据包序号,并查找空隙找出缺失的数据包,并发送NACK报文,请求重传缺失的数据包。NACK通过RTCP通道发出,内容是表示丢失数据包的序列号。当发送端收到NACK报文后,会根据报文指示,找出缓存中的数据包并重新发送。接收端收到重传报文后,一定要放回正确的序列位置。

接收端可以设置最多允许多少次重传(上图中的n),根据对延迟的敏感程度,选择合适的重传次数大小。针对设置的n值,接收缓冲区必须能存储至少n*max(RTT)的数据。

4. 解码器输出时,会经过一个去抖动缓冲区De-Jitter,来平滑输出的数据包,保证数据流的稳定平滑。

开源RIST实现

librist是最重要的开源实现,项目地址是 https://code.videolan.org/rist/librist ,目前支持Simple Profile和Main Profile。

另外RIST也在推进加入许多开源项目的过程中,包括 VLC、FFMPEG、gstreamer、OBS Studio 和 WireShark。

协议文档

Simple Profile(TR01):

https://www.videoservicesforum.org/download/technical_recommendations/VSF_TR-06-1_2020_06_25.pdf

Main Profile(TR02):

https://www.videoservicesforum.org/download/technical_recommendations/VSF_TR-06-2_2021-04-26.pdf

Advanced Profile(TR03):

https://www.videoservicesforum.org/download/technical_recommendations/VSF_TR-06-3_2021-10-19.pdf

参考文档

[1] VSF Active Group: https://www.videoservicesforum.org/RIST.shtml

[2] RIST wikepedia: https://en.wikipedia.org/wiki/Reliable_Internet_Stream_Transport

[3] rist.tv: https://www.rist.tv/

[4] RIST开源集合: https://code.videolan.org/rist

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • RIST背景
  • RIST协议
    • Simple Profile:
      • Main Profile:
        • Advanced Profile:
          • RIST简单交互过程
          • 开源RIST实现
          • 协议文档
            • Simple Profile(TR01):
              • Main Profile(TR02):
                • Advanced Profile(TR03):
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档