srt文件怎么编辑 srt是什么文件( 二 )



以前,当涉及到直播的低延迟时,通常会避免使用TCP协议,因为错误检查、数据包重发、三次握手、"慢启动 "和防止信道拥塞(TCP慢启动和拥塞避免阶段),延迟会增加 。 同时,即使信道很宽,传输开始前的延迟也可能达到RTT的五倍,而吞吐量的增加对延迟的影响非常小 。

另外,使用TCP广播的应用程序对协议本身没有任何控制(它的超时、重新广播的窗口大小),因为TCP传输是作为一个单一的连续流实现的,在错误发生之前,应用程序可能会无限期地 "冻结" 。 而且高层协议没有灵活配置TCP,以尽量减少广播问题的能力 。

同时,有些协议即使在开放的网络和长距离的情况下也能通过UDP有效工作 。

下面让我们来考虑和比较各种协议的实现 。 在基于TCP的协议和数据传输格式中,将会涉及RTMP、HLS和CMAF,而在基于UDP的协议和数据传输格式中,将会涉及WebRTC和SRT 。

RTMP

RTMP是Macromedia公司的专有协议(现在归Adobe公司所有),在基于Flash的应用程序流行时非常流行 。 它有几个品种,支持TLS/SSL加密,甚至还有基于UDP的变种,即RTFMP(实时媒体流协议,用于点对点连接) 。 RTMP将数据流分割成片段,其大小可以动态变化 。 在通道内,与音频和视频有关的数据包可以交错和复用 。

srt文件怎么编辑 srt是什么文件



图2. RTMP广播实现用例

RTMP会构建几个虚拟通道,在这些通道上传输音频、视频、元数据等 。 大多数CDN不再支持RTMP作为向终端客户分配流量的协议 。 然而,Nginx有自己的RTMP模块,支持普通的RTMP协议,它运行在TCP之上,使用默认的1935端口 。 Nginx可以作为一个RTMP服务器,分发它从RTMP流媒体接收的内容 。 另外,RTMP仍然是向CDN交付流量的流行协议,但在未来,流量将使用其他协议进行传输 。

目前,Flash技术已经过时,且不受支持:浏览器或是减少对它的支持,或是完全禁止使用 。 RTMP不支持HTML5,在浏览器中也难以使用(播放需要通过Adobe Flash插件) 。 为了绕过防火墙,他们使用RTMPT(封装到HTTP请求中,并使用标准的80/443而不是1935端口),但这大大影响了延迟和冗余(根据各种估计,RTT和整体延迟增加30%) 。 尽管如此,RTMP仍然很流行,例如,在YouTube上的广播或在社交媒体上(Facebook的RTMPS) 。

RTMP的主要缺点是缺乏对HEVC/VP9/AV1编码器的支持,以及只允许两个音轨的限制 。 此外,RTMP在数据包头中不包含时间戳 。 RTMP只包含根据帧率计算的标签,因此解码器并不确切知道何时解码这个流 。 这就需要一个接收组件均匀地生成用于解码的样本,因此缓冲区必须按数据包抖动的大小来增加 。

RTMP的另一个问题是重新发送丢失的TCP数据包,这在前文已经描述过 。 为了保持较低的回传流量,确认收到(ACK)并不直接到发件端 。 只有在收到数据包链后,才会向广播方发送ACKs或NACKs的确认信息 。

根据各种估计,使用RTMP进行广播,通过完整的编码路径(RTMP编码器→RTMP服务器→RTMP客户端)的延迟至少是两秒 。

CMAF

CMAF(Common Media Application Format,通用媒体应用格式)是由苹果和微软邀请MPEG开发的协议,用于在HTTP上进行自适应广播(具有根据整个网络带宽速率变化而变化的自适应比特率) 。 通常情况下,苹果公司的HTTP直播(HLS)使用MPEG TS流,而MPEG DASH使用片段式的MP4 。 2017年7月,CMAF标准被发布 。 在CMAF中,片段式的MP4片段(ISOBMFF)通过HTTP传输,同一内容有两个不同的播放列表,用于特定的播放器:iOS(HLS)或Android/Microsoft(MPEG DASH) 。

推荐阅读