贝利信息

html5播放rtsp怎么转码_html5将rtsp转hls或webrtc【步骤】

日期:2026-01-26 00:00 / 作者:絕刀狂花
HTML5不支持RTSP协议,必须通过服务端转流为HLS或WebRTC等浏览器兼容格式;HLS延迟高(10–30秒)但兼容性好,WebRTC延迟低但部署复杂。

HTML5 本身不支持 RTSP,必须靠服务端转流

浏览器原生 标签根本不认识 rtsp:// 协议,这不是前端能“加个库”绕过去的限制,而是协议层彻底不兼容。RTSP 是控制协议(带 SETUP/PLAY),而 HTML5 只接受基于 HTTP 的流(如 HLS、MPEG-DASH)或 WebRTC 的信令+数据通道。所以所有“HTML5 播放 RTSP”的方案,本质都是:先用服务端把 RTSP 流转成浏览器能吃的格式,再让前端加载。

选 HLS 还是 WebRTC?看延迟和兼容性需求

HLS 延迟高(通常 10–30 秒),但兼容性极好(Safari、Chrome、Android WebView 全支持),部署简单;WebRTC 延迟低(RTCPeerConnection 的 H.264 支持不稳定,Android 旧版 WebView 也不一定支持。

用 FFmpeg 转 RTSP 到 HLS 的最小可行命令

这是最轻量、调试最快的起步方式,适合测试和小规模部署:

ffmpeg -i "rtsp://admin:password@192.168.1.100:554/stream1" \
  -c:v libx264 -c:a aac \
  -f hls \
  -hls_time 2 \
  -hls_list_size 3 \
  -hls_flags delete_segments \
  /var/www/html/live/stream.m3u8

注意几个关键点:

立即学习“前端免费学习笔记(深入)”;

WebRTC 方案里最容易被忽略的三件事

用 Janus 或 Mediasoup 接 RTSP 后,前端看似只是调 new RTCPeerConnection(),但实际卡点都在服务端和网络配置上:

真正跑通前,先用 ffplay rtsp://...curl http://your-hls-domain/live/stream.m3u8 确认源和转流都活,再动 WebRTC。一步跨太多,问题根本分不清是推流断了、信令没通,还是 SDP 交换失败。