使用flv.js全记录

116 阅读3分钟

自从2024年12月12日从广州南沙广汽的项目准备上线完毕,即刻奔赴京城进行下一个项目,原计划元旦前结束,但是2025年1月6号也就是今天,我还在酒店待着,眼瞅着放了一个星期的带薪假,好好整理一下这中间接近一个月的项目收货,重点就聚焦于flv.js实现海康威视监控实时播放,逆天的是支持九宫格视频浏览器实时播放。

常见的视频编码格式有哪些

  1. H.264(AVC):一种广泛使用的视频编码标准,提供了较高的压缩率,同时保持了较好的视频质量。
  2. H.265(HEVC):下一代视频编码标准,提供了比H.264更高的压缩率,但计算复杂度也更高。
  3. VP8:由Google开发的一种视频编码格式,用于WebM视频格式。
  4. VP9:VP8的继任者,提供了更高的压缩率和质量。
  5. AV1:一种开放、免专利费的视频编码格式,旨在替代H.264和HEVC。

flv.js为何物

深入解析FLV格式_flv 网络流-CSDN博客

项目中如何使用

海康RTSP转flv并实现h5页面播放_海康flv地址-CSDN博客

使用ffmpeg生成flv视频流在网页上显示海康摄像头图视频 - 柳暗花明8963 - 博客园

海康威视摄像头视频在web端播放FFmpeg + nginx-http-flv-module + flv.js(无需安装插件) - 掘金

自己系统集成海康威视摄像机和录像机实现监控与回放(二开海康威视摄像机)_摄像头系统集成-CSDN博客

常见报错

2.1 SourceBuffer报错

使用报错如下:Failed to read the ‘buffered’ property from ‘SourceBuffer’: This SourceBuffer has been removed from the parent media source.

  1. 解决方案1:

这种错误提示一般是在flv源发生异常中断的时候产生的。错误提示大多数都在 mse-controller.js 这个模块中。

解决办法:在 mse-controller.js中(flv.js/src/core/mse-controller.js),appendMediaSegment()、_needCleanupSourceBuffer()这些方法的入口处调用检查以下MediaSource的合法性

if (!this._mediaSource || this._mediaSource.readyState !== 'open') {

return;

}

  1. 解决方案2

  1. 解决方案3:

在使用flv播放视频流的时候遇到了个错误Uncaught (in promise) DOMException: Failed to read the ‘buffered’ property from ‘SourceBuffer’:This SourceBuffer has been removed from the parent media source.

`

`

解决的关键是当弹框关闭的时候,直接调用flv的方法的话不能直接销毁的话,没有完全销毁这个video,然后刚刚开始我给他加了一个key的值,然后创建一个flv对象的时候就自增,看看还会不会报错,结果没有报错,是可以正常获取到视频的,但是视频没有显示出来,然后我加多一个v-if,关闭弹框就把整个video销毁了,然后就没有报错了。

因此总结了一下:之所以会报这个错误的话是因为没有完全销毁这个组件,最简单的做法就是把整个video销毁掉。

flv优化方案

flv几个不同参数

  1. enableWorker:是否启用Web Worker来解码视频。
  2. enableStashBuffer:是否启用缓冲区,以减少卡顿。
  3. stashInitialSize:缓冲区的初始大小。

如何实现实时视频播放