flv流媒体播放 告别Flash

457 阅读1分钟

几种直播协议

  • RTMP: 底层基于TCP,在浏览器端依赖Flash。
  • HTTP-FLV: 基于HTTP流式IO传输FLV,依赖浏览器支持播放FLV。
  • WebSocket-FLV: 基于WebSocket传输FLV,依赖浏览器支持播放FLV。WebSocket建立在HTTP之上,建立WebSocket连接前还要先建立HTTP连接。
  • HLS: Http Live Streaming,苹果提出基于HTTP的流媒体传输协议。HTML5可以直接打开播放。
  • RTP: 基于UDP,延迟1秒,浏览器不支持。

Flv.js概览

flv.js只做了一件事,在获取到FLV格式的音视频数据后通过原生的JS去解码FLV数据,再通过Media Source Extensions API 喂给原生HTML5 Video标签。(HTML5 原生仅支持播放 mp4/webm 格式,不支持 FLV)

  • FLV 容器,具有 H.264 + AAC 编解码器播放功能
  • 多部分分段视频播放
  • HTTP FLV 低延迟实时流播放
  • FLV 通过 WebSocket 实时流播放
  • 兼容 Chrome, FireFox, Safari 10, IE11 和 Edge
  • 十分低开销,并且通过你的浏览器进行硬件加速

iPhone版的Safari是不支持MSE的,所以在iPhone上只有hls是最理想的选择 可以通过JS播放器项目(video.js)flv.js和video.js配合使用

this.flvPlayer1 = flvjs.createPlayer({
    type: 'flv',
    isLive: true,
    hasAudio: false,
    url: url  // 自己的flv视频流
});
this.flvPlayer1.attachMediaElement(videoElementVisible);
this.flvPlayer1.load();
this.flvPlayer1.play();