直播视频推流至中间服务器、通过HTTPS地址播放可使用哪些传输协议?
适合高稳定性、高安全要求的直播流传输协议方案
你的需求分为两段传输链路:推流侧到中间服务端的上行传输、服务端到观看侧的HTTPS下行分发,两段可分别选择适配的协议,同时满足稳定、安全要求:
一、推流端到中间服务端可选协议
- RTMP(S):传统直播领域最成熟的推流方案之一,RTMPS是增加了TLS加密的版本,本身基于TCP传输,天然比原始UDP更稳定,丢包会自动重传,不会出现原始UDP的乱序、丢包导致的花屏、断流问题,生态完善,
ffmpeg、OBS等主流推流工具都原生支持,服务端可以用SRS、Nginx-rtmp-module实现接收。加密后的RTMPS完全满足传输链路的安全要求,不会出现明文泄露的问题。 - SRT:专门为媒体传输设计的协议,基于UDP改良,加入了ARQ重传、拥塞控制、AES加密能力,比RTMP延迟更低,同时稳定性远高于原始UDP,抗弱网能力极强,适合跨地域、网络条件不稳定的推流场景,
ffmpeg从4.0版本开始原生支持SRT推流,服务端SRS、OvenMediaEngine都支持接收SRT流,安全层面自带加密能力,不需要额外做链路加密处理。 - RIST:和SRT定位类似的媒体传输协议,同样基于UDP做可靠传输增强,支持AES-128/256加密,容错机制更完善,适合对稳定性要求极高的专业直播场景,比SRT的协议规范更开放,商业场景应用非常广泛。
- WebRTC(WHIP):如果是网页端推流的场景可以选择,WHIP是WebRTC标准化的推流协议,基于UDP,自带DTLS加密、SRTP媒体加密,还有NAT穿透能力,延迟最低可以到百毫秒级别,现在主流的直播服务端都已经支持WHIP协议接收。
二、服务端到观看端的分发协议
所有协议均基于HTTP/HTTPS传输,完全兼容你要求的HTTPS访问格式:
- HLS:苹果推出的基于HTTP的分片直播协议,全平台支持,只要是支持HTTPS的设备都能直接播放,天然跑在HTTPS链路上,安全和兼容性拉满,每个分片都会做完整性校验,稳定性极高,非常适合大规模观众分发的场景,服务端可以直接把接收到的流转成HLS分片,输出
https://server/live.m3u8的播放地址。 - HTTP-FLV:把FLV封装的直播流通过HTTP传输,延迟比HLS低,同样完全跑在HTTPS链路上,支持边下边播,PC端、移动端网页都可以用flv.js直接播放,不需要额外的插件,稳定性也远高于原始UDP方案。
- CMAF(fMP4分片):基于MP4封装的HTTP直播协议,可以直接输出类似
https://server/live.mp4的播放地址,完全符合你要求的地址格式,跑在HTTPS链路上,支持加密和分片校验,稳定性和兼容性都很好,现在主流浏览器都原生支持fMP4的直播播放。 - DASH:国际标准化的HTTP自适应码率协议,和HLS类似,支持根据用户的网络情况自动切换清晰度,跑在HTTPS链路上,安全性稳定性都有保障,适合多终端、网络条件复杂的观看场景。
- WebRTC(WHEP):如果需要低延迟观看的话可以选择,WHEP是WebRTC标准化的播放协议,同样支持HTTPS信令传输,媒体流加密,延迟可以到百毫秒级别,适合对实时性要求高的场景。
实际部署的时候可以直接用成熟的开源直播服务端(比如SRS、OvenMediaEngine)代替自研的nodejs dgram服务,这些服务端原生支持上面所有协议,不需要自己实现丢包重传、加密、协议转换的逻辑,稳定性和安全性都比自研的原始UDP方案高很多,
ffmpeg可以直接推流到这些服务端,不用修改太多现有推流逻辑。
内容的提问来源于stack exchange,提问作者user3807476
相关产品推荐
相关产品推荐

