我把自己日常要用的一个视频处理需求做成了在线工具:videosnap.cc
本来目标很朴素:
- 不用装软件
- 尽量浏览器本地处理
- 少上传原视频,降低隐私顾虑
结果最近被一个问题狠狠干懵了:处理进度卡在 99% 很久,没挂但就是不结束。
复现现象(真实可复现)
在部分机器 + 中大视频文件下:
- 前面进度推进正常
- 到 99% 后长时间不动
- CPU 看着还在跑
- 页面不报错
- 用户体感就是:“卡死了”
我目前的判断
大概率是尾段组合问题,不是单点 bug:
ffmpeg.wasm处理结束后,JS 侧Uint8Array/Blob搬运开销太大Worker <-> Main thread消息传递产生了额外 copyMEMFS / WORKERFS在大文件尾段读写时可能有阻塞;OPFS还没来得及完整验证,准备继续试
已尝试(但还没彻底解决)
- 调 ffmpeg 参数,减少中间产物
- 主流程尽量放到 Worker
- 尝试
WORKERFS - 尝试
OPFS - 控制并发,压低内存峰值
- 修正进度条策略(避免“假 100%”)
想请教各位的关键问题
- 你们做 Web 端 ffmpeg 时,有没有遇到这种“99% 假完成”?
- 大文件场景下,最终导出阶段你们是怎么设计的?
OPFS在真实生产里是否明显优于MEMFS/WORKERFS?- 有无推荐的排查维度:内存曲线、拷贝次数、阶段耗时埋点等?
项目地址:https://videosnap.cc 先谢过各位 🙏