四.细节问题处理
这里主要是我们不能使用video容器自带的暂停和播放按钮了,我们要隐藏原来的自己实现暂停和播放。暂停和播放说白了就是断流和重新拉流
// 播放和暂停实现逻辑 const onclick = isplay => { // isplay表示视频是否正在播放 if (isplay) { // 在播放 断流 player.unload(); player.detachMediaElement(video.current); } else { // 已断流,重新拉流 player.attachMediaElement(videoEl.current); player.load(); player.play(); } }
五.flv如何监听错误(异常)
flvjs.Events表示事件
flvjs.ErrorTypes表示一级错误
flvjs.ErrorDetails表示二级错误
一级错误又分为:
NETWORK_ERROR:网络错误,表示连接问题
MEDIA_ERROR:媒体错误,格式或解码问题
OTHER_ERROR:其他错误
二级错误分为:
NETWORK_STATUS_CODE_INVALID:http状态码错误,说明指定流的地址url地址有误
NETWORK_TIMEOUT:连接超时,后台或者网络问题
MEDIA_FORMAT_UNSUPPORTED:媒体格式不支持,一般是流数据不是flv的格式
// 监听错误事件 flvPlayer.on(flvjs.Events.ERROR, (err, errdet) => { // err表示一级异常,errdet表示二级异常 if (err == flvjs.ErrorTypes.MEDIA_ERROR) { console.log("媒体错误"); if (errdet == flvjs.ErrorDetails.MEDIA_FORMAT_UNSUPPORTED) { console.log("媒体格式不支持"); } }; if (err == flvjs.ErrorTypes.NETWORK_ERROR) { console.log("网络错误"); if (errdet == flvjs.ErrorDetails.NETWORK_STATUS_CODE_INVALID) { console.log("http状态码异常"); } } if (err == flvjs.ErrorTypes.OTHER_ERROR) { console.log("其他异常", errdet); } })