程序员菜鸟,请教一个 web 视频转码的问题

查看 61|回复 6
作者:Asuler   
我们公司在某地硬件设备上装了视频监控,目前是上传到云存储桶里,为了节省存储带宽等成本,存的是 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 支持的格式,对于浏览器端来说属于无感知的转码那种的,不需要存文件,直接返回流给前端
zhmouV2   
第一个性能确实挺烂的,俺任职的某个小公司似乎有个平台也是这么实现的(斜眼笑
但是 chrome 现在不是可以 h265 硬解吗?具体我也不是很懂
beyondsoft   
你这样性能太低了, 如果同时有多个人怎么解决. 我给你推荐一个方案 用一个中间服务, 中间服务自己把 视频流录制好, 页面里面直接引用就好. 在这里强烈推荐
https://github.com/bluenviron/mediamtx 这个项目, 部署一下然后把监控的流推到这里, 页面直接用就行了
rabbbit   
给一个实现方式参考,挺邪门的。
海康的 web sdk 自带支持查看录像机的 h265 回放(需要本地安装 exe 软件)。
猜测原理是 exe 开个服务,本地解码 h265 ,绘制一个窗口盖在浏览器上。
kk2syc   
https://github.com/numberwolf/h265web.js h265 硬解
sagaxu   
建议好好研究研究几个 porn 视频网站,看看业界是怎么存储和播放的
z0ffy   
chrome105 之后支持硬解。应该可以支持大部分 h265 。再用 electron 搞个播放端,解决。剩余播放不了的,丢过去转码。
您需要登录后才可以回帖 登录 | 立即注册

返回顶部