做视频相关项目的朋友经常会被一个问题困扰:视频流到底用什么协议传?RTMP、HLS、WebRTC、SRT,协议一大堆,各有各的优缺点,选不对的话要么延迟大要么不稳定。今天就聊聊网络视频传输这几种主流方案的区别。
先说说RTMP,这是Adobe搞的协议,曾经是直播行业的标配。它基于TCP,传输稳定,不容易丢包,但延迟比较大,一般在3到10秒之间。现在RTMP主要用在推流端,比如主播用OBS推流到服务器用的就是RTMP,播放端基本不用了。
HLS是苹果推的协议,把视频切成一个个小的TS切片,通过HTTP来分发。它的最大优点是兼容性好,几乎所有浏览器和设备都支持,穿透防火墙也没问题,因为走的是HTTP 80端口。但HLS的延迟也不小,默认切片是6到10秒,整体延迟在10秒以上,适合对实时性要求不高的点播和直播场景。
WebRTC是这几年火起来的,它最大的特点就是低延迟,能做到毫秒级。WebRTC基于UDP,自带NAT穿透和音视频编解码,浏览器原生支持,不需要装插件。现在很多互动直播、视频会议用的都是WebRTC。不过它的缺点也明显,服务器部署复杂,CDN支持不如HLS成熟,弱网环境下容易卡顿。
SRT是比较新的协议,结合了UDP的低延迟和TCP的可靠性,用在广电和专业直播领域比较多。它的抗丢包能力强,在公网传输不稳定的情况下表现比RTMP好,但普及度还不高。
选型的时候主要看三个指标:延迟要求、兼容性、网络环境。实时互动选WebRTC,普通直播选RTMP推流加HLS播放,广电级专业传输选SRT。没有万能的协议,得根据场景来。
下一篇:没有了