把 FFmpeg 搬进浏览器?我体验了开源流媒体下载器 FlowPick,聊聊真实感受
一、为什么关注它
相信不少人都有过这种需求:B 站视频想缓存下来通勤看、付费网课想留一份备份、播客想转成音频随身听。但真要去下,往往绕不开两类方案——
- 各种「在线解析」网站:你得把视频链接粘贴到别人的服务器上,等于把「我在看什么」交了出去,还经常限速弹广告;
- 桌面客户端:功能强,但动辄要注册、要上传,隐私账算不清。
所以当我看到 FlowPick 这个项目时,眼前一亮:它是一个隐私优先的流媒体下载工具,同时提供浏览器扩展和在线网页两种形态,核心卖点是所有处理都在你浏览器里完成,文件不落任何第三方服务器。而且代码开源(github.com/ezwebtools/…
这篇就从开发者视角,聊聊我实际体验下来的感受,以及它的适用边界。
二、上手:两种方式都能用
FlowPick 给了一条「零门槛」路径和一条「高频」路径:
- 在线工具:直接打开
/m3u8-downloader或/dash-downloader,粘贴流地址就能下,不用装任何东西。适合临时用、或者在装不了扩展的环境里用。 - 浏览器扩展:从 Chrome / Edge 应用店装一个,工具栏点开就能自动嗅探当前页面的媒体。适合每天高频用。
我自己的习惯是平时用扩展,临时在别人机器上就用在线工具。两种方式共用同一套核心下载引擎(Nuxt 的 composable),所以行为一致。
三、功能实测:它到底能干什么
按官方流程走下来,这几个能力是实打实能用的:
-
媒体嗅探 + 自动分类:扩展会监听浏览器网络请求,把资源分成媒体流(M3U8 / MPD)、视频、音频、图片四类,不用你手动分辨。
-
画质选择:自适应流(HLS / DASH)会列出所有可用清晰度,只下对应分辨率的切片,省时省空间。
-
批量下载:勾选多个资源一次性进队列,支持暂停 / 继续 / 取消。
-
格式转换:TS → MP4 是「换容器(remux)」而不是重新编码,不损画质、速度很快。底层就是这条命令在浏览器里跑:
ffmpeg -i input.ts -c copy output.mp4 -
大文件下载:Chrome / Edge 走 File System Access API 流式写入,没有文件大小上限,内存占用也不随文件变大而膨胀。
-
隐私:零数据收集、本地处理、开源可审计——这一点下面单独说。
四、开发者视角:为什么觉得它「稳」
抛开功能,单看技术选型,它有几个让我比较放心的点:
1. FFmpeg 真的搬进了浏览器
合并、转码全用 @ffmpeg/ffmpeg(WASM 版)在客户端完成,文件不经过服务器。代价是首载约 8MB 的 WASM,但后续有缓存,且彻底免去了「上传排队 + 服务端转码」的链路。
2. 三层写入降级,工程上很务实
大文件写入按 FSA → StreamSaver → Blob 的顺序自动降级:
- FSA(Chrome / Edge 86+):流式写,任意大小,内存恒定;
- StreamSaver:Service Worker 代理,兼容更广;
- Blob:兜底,但受内存限制,超大文件会被拒绝并提示换浏览器。
设计文档里连「估计文件大小超过 1.5GB 就强制走流式写入」的阈值都写清楚了,不是拍脑袋。
3. 开源 + 权限克制
代码公开可审计,无混淆、无远程加载脚本。webRequest 权限只读作响应头(Content-Type 等),不读页面内容、不拿 cookie 明文。对一个要「碰你浏览器请求」的扩展来说,这种克制很重要。
五、客观说说不足
种草归种草,边界得讲清楚:
- DRM 内容解不了(如 Widevine),这是设计边界,不是 bug,也别指望它能破。
- 在线工具受 CORS 限制:如果流服务器没配跨域头,直接下可能失败,这种情况得换扩展版。
- FFmpeg WASM 首载有体积,弱网第一次会慢一点。
- 大文件体验依赖浏览器:Chrome / Edge 最稳,Safari 走 Blob 模式,体验会弱一截。
六、谁适合用,谁先等等
比较适合:想做个人/合规用途的离线归档(网课、直播回放、播客音频)、图片批量采集、以及一切「不想把数据交给云端工具」的隐私敏感场景。
可以先等等:你要下的是带 DRM 的付费内容(它解不了);或者你只用 Safari 且经常下几个 GB 的大文件(写入策略会退化);再或者你只是偶尔下一次、嫌装扩展麻烦——那直接用它的在线工具就行,不必折腾。