流媒体协议详解

RTMP、HLS、SRT、HTTP-FLV、WebRTC、DASH —— 一篇搞懂 IPTV 主流传输协议的差异、应用场景与服务器选型。

主流协议对比

协议 底层 延迟 典型用途 兼容性
RTMPTCP 19351~3s推流(OBS→服务器)老旧但通用
HLSHTTP 80/4435~20s直播分发到 Web/手机最广泛
HTTP-FLVHTTP1~3sB 站式低延迟 Web 直播中(需 flv.js)
SRTUDP0.5~2s跨公网高质量推流新,越来越好
WebRTCUDP/SRTP<0.5s连麦、超低延迟浏览器原生
DASHHTTP5~20s点播 / 国际 CDN

HLS:HTTP Live Streaming

HLS 由 Apple 提出,将媒体流切片为若干小 .ts 文件,通过 .m3u8 索引播放。由于基于 HTTP,可被任意 CDN 缓存,是目前 IPTV 直播分发的首选协议。

推流端 (OBS)
流媒体服务器 (SRS)
切片 ts + m3u8
CDN / Nginx
播放器 (hls.js / VLC)

一份最小化的 playlist.m3u8

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:6.0,
seg0.ts
#EXTINF:6.0,
seg1.ts
#EXTINF:6.0,
seg2.ts
#EXT-X-ENDLIST
低延迟 HLS (LL-HLS):Apple 推出的 LL-HLS 通过部分切片(Partial Segments)+ 阻塞请求将延迟压到 2 秒内,已被 hls.js 1.0+ 支持。

RTMP:经典推流协议

RTMP 基于 TCP 长连接,端口 1935,是 OBS、FFmpeg 默认的推流方式。服务器端常用 Nginx-RTMP 模块SRS

Nginx-RTMP 最小配置:

worker_processes auto;
rtmp {
    server {
        listen 1935;
        chunk_size 4096;
        application live {
            live on;
            record off;
            # 转 HLS
            hls on;
            hls_path /var/www/hls;
            hls_fragment 6s;
            hls_playlist_length 30s;
        }
    }
}

SRT:跨公网高质量传输

SRT(Secure Reliable Transport)基于 UDP,自带 ARQ 重传与加密,特别适合跨城 / 跨国推流,已被 SRS、VLC、OBS 全面支持。

# SRS 开启 SRT 监听
srt_server {
    enabled on;
    listen 10080;
    maxbw 10000000;
    connect_timeout 4000;
    peer_idle_timeout 8000;
}

推流示例:

ffmpeg -re -i input.mp4 -c copy \
  -f mpegts 'srt://your.server:10080?streamid=#!::r=live/stream,m=publish'

HTTP-FLV:B 站式低延迟直播

将 FLV 封装通过 HTTP 流式下发,浏览器用 flv.js 直接播放,延迟可达 1~3 秒,相比 HLS 体验更佳,国内直播平台广泛使用。

<video id="v" controls></video>
<script src="https://cdn.jsdelivr.net/npm/flv.js@latest/dist/flv.min.js"></script>
<script>
  if (flvjs.isSupported()) {
    const player = flvjs.createPlayer({
      type: 'flv',
      isLive: true,
      url: 'https://example.com/live/test.flv'
    });
    player.attachMediaElement(document.getElementById('v'));
    player.load();
    player.play();
  }
</script>
注意:HTTP-FLV 需要 SRS / Nginx-HTTP-FLV 模块支持,并注意 CORS 与跨域问题。

服务器选型建议

SRS

开源 · C++ · 国产

支持 RTMP/HLS/HTTP-FLV/WebRTC/SRT,单机万级并发,是国内最流行的直播服务器。

低延迟WebRTCSRT

Nginx-RTMP

开源 · 模块

经典老牌方案,配置简单,适合中小规模直播与转 HLS,但已不再活跃。

RTMPHLS稳定

MediaMTX (原 rtsp-simple-server)

开源 · Go

极简二进制,支持 RTSP/RTMP/HLS/WebRTC/SRT 一站式转发,开箱即用。

零配置多协议

Wowza

商业 · Java

企业级流媒体服务器,支持 DRM、录制、转码、多端分发。

商业DRM转码

Ant Media Server

商业 · Java

主打超低延迟(WebRTC 端到端 <0.5s),适合连麦与监控。

WebRTC超低延迟

ZLMediaKit

开源 · C++

高性能国产流媒体服务器,协议覆盖全,性能极佳,社区活跃。

高性能多协议

常见排查思路