h5 video

video 想要更好的控制分段请求,需要前后端共同设置。前端可以借助 video.js 这样的库,再其 7 版本之后已经集成对于流媒体视频播放的支持(支持 HLS,DASH 等协议)。

“Media Source Extensions”(通常简称为“ MSE”)是 W3C 的一种规范,当今大多数浏览器都在实现。它的创建是为了直接使用 HTML 和 JavaScript 允许那些复杂的媒体使用案例。

当我们在 html 中放一个 video 标签,浏览器会直接发起一个 Range: bytes=0- 的请求,向服务器请求从开始到结尾的完整文件,如果服务器不支持 Range Requests,响应码为 200,浏览器会正常按流式加载整个视频文件; 如果服务器支持 Range Requests,响应码为 206,则浏览器会在接收到足够字节(一般是比当前播放进度往后推20s)时结束掉请求,以节省网络流量;当播放进度继续往前,缓存不够时,浏览器会发起一个新的 Range Requests 请求,请求的 Range 直接从缓存结尾的字节开始,只加载剩余的部分文件;

mp4 不能流式加载。

dash flv 需要加载清单文件,该清单文件对应后端的分片视频。dash flv 属于流媒体协议。

缓冲播放——边下边播时,选择开始播放的最佳时间点
当视频越来越长或者网络慢时,等待视频全部下载完再播放也不是好的体验,最好能边下边播,缓冲到流畅状态就开始播放,那什么时候播放才是最佳时间点呢?在iOS中,canplaythrough事件就是这个最佳时间点,它是通过动态计算缓冲量和下载速度得出的视频可以流畅播放的状态反馈。

你可能感兴趣的:(h5 video)