Wasm 无服务端音视频转码工具

2023-01-14 14:18:16 +08:00
 suke119

最近在折腾音视频相关的,本来想搞个网页工具在线转码,视频转 Gif ,音频提取的工具,原本是打算后端处理,然后返回处理结果给前端的,但是想到这玩意涉及的文件如果敏感再加上宽带遭不住,所以就直接玩玩 Wasm这玩意,只能说很牛,这两天写了个在线演示 Demo:

https://lav.wangsrbus.cn

宽带较小,因为首次加载 Wasm 文件的时候比较慢,等加载完成就可以录屏,录像,转码(转 avi ,当然后面可以自定义),录屏转 GIF 。 主要用到的还是ffmpeg编译好的Wasm文件,处理起来很方便,如果了解一些基本ffmpeg命令的话基本上都是实现。

未来,因为ffmpeg的命令基本都支持,那么理论上客户端推流拉流基本上都可以实现,因为后期可以扩展。自己也是WebRTC的重度爱好者,想把这玩意和Wasm结合,从 RTC 到 RTE 过渡,我感觉Wasm在未来一定很有大的飞跃。

如果想要完整代码的话,我在掘金也发了文章,感兴趣的可以自己看看,实现细节文章和源码

4070 次点击
所在节点    分享创造
37 条回复
suke119
2023-01-14 14:58:23 +08:00
呀 没人感兴趣吗 呜呜呜
Rrrrrr
2023-01-14 15:44:01 +08:00
之前玩了一个 demo ,转个几 M 的东西,都要好久
suke119
2023-01-14 16:05:21 +08:00
@Rrrrrr 和本地 CPU 性能挂钩的,还有转码参数设置,未来感觉更多的编译库出来会越来越好玩。
suke119
2023-01-14 16:08:58 +08:00
@Rrrrrr 谷歌的 MediaPipe (人脸分割,行为分析、手势识别、动作识别、物体识别)媒体图像处理的就是用 wasm 的,然后配合 WebGL 实现 GPU 的调度。
klo424
2023-01-14 16:10:07 +08:00
更感兴趣低延迟的 web 端拉视频流
suke119
2023-01-14 16:12:06 +08:00
@klo424 那必然是 WebRTC 拉流了,现在很多的,ZLM 、SRS 等开源的;如果感兴趣的话可以看看我写的掘金小册,我主页有的
okakuyang
2023-01-14 16:13:49 +08:00
我目前需求迫切的:
jpg 转 avif
jpg 转 webp ( chrome 支持,但是其他浏览器不支持)

avif 真的很诱惑,但是现有的方案速度都不够理想。
suke119
2023-01-14 16:19:40 +08:00
@okakuyang 这个确实是,但是 wasm 毕竟还没长大,成型的 wasm 编译库很少,FFmpeg 原生转换的话都需要重新编译依赖,wasm 我估计也不得行
enchilada2020
2023-01-14 16:21:54 +08:00
@okakuyang 本地 node 跑个 sharp 就行了 一行代码的事
suke119
2023-01-14 16:24:16 +08:00
@okakuyang 看下这个 https://www.npmjs.com/package/libavif-wasm 现成的 wasm 库,还没试效果
suke119
2023-01-14 16:25:05 +08:00
@enchilada2020 服务端处理的方式很多的,但是纯 web 端处理,wasm 更有优势一些撒
lambdaq
2023-01-14 16:28:48 +08:00
吧 ffmpeg 的 wasm 精简一下。 不必要的功能去掉。
suke119
2023-01-14 16:37:41 +08:00
@lambdaq 后面发展壮大了 会出来很多这个库的,期待中(❁´◡`❁)
justin2018
2023-01-14 18:30:53 +08:00
这个库 得加载一段时间 库有点大😁
suke119
2023-01-14 18:55:00 +08:00
@justin2018 是的 好在加载一次之后磁盘缓存了,刷新后都是从 disk cache 里加载的🤪
xiangyuecn
2023-01-14 19:00:59 +08:00
转码兴趣不大,用 js 生成视频比较感兴趣,前段时间还找了好几个库 生成 webm 或 mp4 的,不过都不能添加音轨 没啥多大用处,只能生成无声视频,配合 canvas 画图 还是很屌的
suke119
2023-01-14 19:31:28 +08:00
@xiangyuecn ffmpeg.wasm 不就是干这个的撒 原生命令都支持的 视频编辑
Actrace
2023-01-14 20:57:07 +08:00
之前有设计过这一块的业务,怎么说呢,如果客户不介意的话,挺好的。
不过现实是 B 站之前好像玩过一次,被骂的很惨。

另外 WASM 不能调用 GPU 硬解是个硬伤,效率上还是有待优化。
xuanyuanaosheng
2023-01-14 21:05:26 +08:00
支持一波!
xiangyuecn
2023-01-14 21:09:21 +08:00
@suke119 #17 也行哈,就是 ffmpeg.wasm 太大了,得想办法去掉没有用到的功能

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/908890

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX