我们公司在某地硬件设备上装了视频监控,目前是上传到云存储桶里,为了节省存储带宽等成本,存的是 h.265 编码格式的视频,但是这样子在浏览器端没法播放

所以我想了两个方案
1. 浏览器端找能支持 h265 的播放器 js ,但是基本上找到的都是基于 wasm 的 ffmpeg ,也就是在浏览器端解码,然后通过 canvas 一帧一帧画,然后再用 audio 播放声音。感觉这个方案不是很好,可能会又吃性能又卡,还有可能声音画面不同步。

2.通过增加中间层服务,使用 ffmpeg+nodejs 进行转码(我不太会其他语言)。尝试了一下如果用 ffmpeg 完全把一个视频转换成 h264 的格式,耗费的时间会很长,有些长视频要半个多小时。

所以我现在的想法是:
       
我看浏览器的 video 标签加载视频时,也不是整个视频缓冲完才开始播放呀,metadata 加载到了就可以播放了?而且貌似也是播放一点加载一点,这样是不是可以用 ffmpeg+nodejs 做成实时转码的服务?浏览器端请求一小段,就转一小段,这样子就使得该视频原生支持 video 标签了,也不需要额外的播放器 js 了。同时也能使用 video 标签自带的进度条拖拽进度

想问下大家我的这个想法是否可行?

还有个问题,我看到一些方案里写 ffmpeg 转 m3u8 ,然后存一堆 ts 文件,浏览器端再用某个 js 播放库去播放,这样存储成本是不是又上来了?外加转码服务的服务器成本,搞不好还不如一开始直接存 h264 格式?

ffmpeg+nodejs 有没有可能做到实时转码成原生 video 支持的格式,对于浏览器端来说属于无感知的转码那种的,不需要存文件,直接返回流给前端
举报· 161 次点击
登录 注册 站外分享
16 条回复  
zhmouV2 初学 2024-9-5 22:20:09
第一个性能确实挺烂的,俺任职的某个小公司似乎有个平台也是这么实现的(斜眼笑
但是 chrome 现在不是可以 h265 硬解吗?具体我也不是很懂
beyondsoft 小成 2024-9-5 22:24:51
你这样性能太低了, 如果同时有多个人怎么解决. 我给你推荐一个方案 用一个中间服务, 中间服务自己把 视频流录制好, 页面里面直接引用就好. 在这里强烈推荐
https://github.com/bluenviron/mediamtx  这个项目, 部署一下然后把监控的流推到这里, 页面直接用就行了
rabbbit 小成 2024-9-5 22:33:09
给一个实现方式参考,挺邪门的。
海康的 web sdk 自带支持查看录像机的 h265 回放(需要本地安装 exe 软件)。
猜测原理是 exe 开个服务,本地解码 h265 ,绘制一个窗口盖在浏览器上。
kk2syc 初学 2024-9-5 22:40:41
https://github.com/numberwolf/h265web.js  h265 硬解
sagaxu 初学 2024-9-5 22:42:54
建议好好研究研究几个 porn 视频网站,看看业界是怎么存储和播放的
z0ffy 小成 2024-9-5 22:45:20
chrome105 之后支持硬解。应该可以支持大部分 h265 。再用 electron 搞个播放端,解决。剩余播放不了的,丢过去转码。
ysc3839 小成 2024-9-5 23:12:23
实时转码一般也会存入硬盘的,不然内存消耗很大
xiaohang427 初学 2024-9-5 23:20:29
@sagaxu 思路刁钻
Projection 小成 2024-9-5 23:30:33
https://chromium.woolyss.com/ 有包含 H.265 解码器的 Chromium 下载
为哈非得在浏览器播放,本地随便起个播放器不行吗
12下一页
返回顶部