被 Web 端 FFmpeg 折磨了:进度总卡在 99%,求大佬指点

我把自己日常要用的一个视频处理需求做成了在线工具: videosnap.cc 本来目标很朴素: 不用装软件 尽量浏览器本地处理 少上传原视频,降低隐私顾虑 结果最近被一个问题狠狠干懵了: 处理进度卡在 99% 很久,没挂但就是不结束。 复现现象(真实可复现) 在部分机器 + 中大视频文件下: 前面进...
被 Web 端 FFmpeg 折磨了:进度总卡在 99%,求大佬指点
被 Web 端 FFmpeg 折磨了:进度总卡在 99%,求大佬指点

我把自己日常要用的一个视频处理需求做成了在线工具:videosnap.cc

本来目标很朴素:

  • 不用装软件
  • 尽量浏览器本地处理
  • 少上传原视频,降低隐私顾虑

结果最近被一个问题狠狠干懵了:处理进度卡在 99% 很久,没挂但就是不结束。


复现现象(真实可复现)

在部分机器 + 中大视频文件下:

  • 前面进度推进正常
  • 到 99% 后长时间不动
  • CPU 看着还在跑
  • 页面不报错
  • 用户体感就是:“卡死了”

我目前的判断

大概率是尾段组合问题,不是单点 bug:

  1. ffmpeg.wasm 处理结束后,JS 侧 Uint8Array/Blob 搬运开销太大
  2. Worker <-> Main thread 消息传递产生了额外 copy
  3. MEMFS / WORKERFS 在大文件尾段读写时可能有阻塞;OPFS 还没来得及完整验证,准备继续试

已尝试(但还没彻底解决)

  • 调 ffmpeg 参数,减少中间产物
  • 主流程尽量放到 Worker
  • 尝试 WORKERFS
  • 尝试 OPFS
  • 控制并发,压低内存峰值
  • 修正进度条策略(避免“假 100%”)

想请教各位的关键问题

  1. 你们做 Web 端 ffmpeg 时,有没有遇到这种“99% 假完成”?
  2. 大文件场景下,最终导出阶段你们是怎么设计的?
  3. OPFS 在真实生产里是否明显优于 MEMFS/WORKERFS
  4. 有无推荐的排查维度:内存曲线、拷贝次数、阶段耗时埋点等?

项目地址:https://videosnap.cc 先谢过各位 🙏

来源: V2EX - 技术查看原文