简介
摄像头拍的视频在浏览器上播放有很多方案可选,一般经过流媒体服务器会推各种格式的流,这些流都是各有优缺点,而且在浏览器上的播放方案也不太一样,下面做个简单研究
RTSP--->Real Time Streaming Protocol
Real Time Streaming Protocol或者RTSP(实时流媒体协议),是由Real network 和 Netscape共同提出的如何有效地在IP网络上传输流媒体数据的应用层协议
格式
rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov
优点
- 延时最低,基本是实时的
缺点
- web 端很难去播
播放方案
- 转化成 webrtc 去播, 比较麻烦
- webassembly 技术去搞(没研究过)
RTMP流---->Real Time Messaging
Real Time Messaging Protocol(简称 RTMP)是 Macromedia 开发的一套视频直播协议,现在属于 Adobe
格式
rtmp://202.69.69.180:443/webcast/bshdlive-pc
优点
- 实时性非常好,延迟很小
缺点
- 只能使用 Flash 实现播放器,现在我们用的是video.js,现在浏览器就不支持了
播放方案
- video.js
HLS流------>HTTP Live Streaming
HTTP Live Streaming(简称 HLS)是一个基于 HTTP 的视频流协议,由 Apple 公司实现,Mac OS 上的 QuickTime、Safari 以及 iOS 上的 Safari 都能很好的支持 HLS,高版本 Android 也增加了对 HLS 的支持。一些常见的客户端如:MPlayerX、VLC 也都支持 HLS 协议。
格式
cctvalih5ca.v.myalicdn.com/live/cctv1_…
优点
- HLS 协议本质还是一个个的 HTTP 请求 / 响应,所以适应性很好,不会受到防火墙影响
- 移动端iOS和 Android 都天然支持HLS协议
缺点
- 每个 ts 按照 5 秒来切分,一个 m3u8 放 6 个 ts 索引,那么至少就会带来 30 秒的延迟
播放方案
- video.js
HTTP-FLV
HTTP-FLV 协议由 Adobe 公司主推,格式极其简单,只是在大块的视频帧和音视频头部加入一些标记头信息,由于这种极致的简洁,在延迟表现和大规模并发方面都很成熟。唯一的不足就是在手机浏览器上的支持非常有限,但是用作手机端 APP 直播协议却异常合适。
格式
xl.live-play.acgvideo.com/live-xl/520…
优点
- 比较好播
缺点
- 有一定的延时
播放方案
- flv.js flv.js是 HTML5 Flash 视频(FLV)播放器,纯原生 JavaScript 开发,没有用到 Flash。由 bilibili 网站开源。
WebRTC
用 WebRTC技术去播放
格式
webrtc://172.16.1.73/live/141111000001320000088@14020000001320000088
优点
- 延时很低,和 rtsp 差不多
- 无插件支持
缺点
- 需要流媒体服务器支持推这类流
- 浏览器徐兼容 WebRtc