对于同一个 m3u8 及其 ts 资源,体积为 2.8g 左右,文件数 2760 个
使用 macOS 自带终端运行:ffmpeg -i ./index.m3u8 -c copy test.mp4 和在 nodejs 里使用“fluent-ffmpeg”这个库(依然是使用‘/opt/homebrew/Cellar/ffmpeg/6.0/bin/ffmpeg’)处理
终端处理仅仅需要 30 秒不到
而 nodejs 运行则需要 21 分钟
我是 nodejs 小白,执行命令的方式是在 vscode 这个编辑器里的终端执行 node ./foo.js
有人了解这个巨大差异产生的原因吗?
我推测是不是 vscode 或者 nodejs 只使用了单线程的关系??
1
zcf0508 2023-09-15 19:22:13 +08:00 via Android
nodejs 使用的应该是 wasm 版本的 ffmpeg ,不是原生的
|
2
xiangyuecn 2023-09-15 19:23:05 +08:00
终端命令有问题,2.8g 的视频,30 秒转码成 mp4 想想都不可能,估计只是用 mp4 容器简单封装了一下 ts 数据
21 分钟时间上倒是合理,进行了 mp4 转码 |
3
renmu 2023-09-15 19:23:49 +08:00 via Android
你的问题,把 start 回调里的命令放出来
|
4
nathanleeinph OP @zcf0508
https://www.npmjs.com/package/fluent-ffmpeg 我最初也是担心是不是原生 ffmpeg ,但是查阅了 npm 上的文档, fluent-ffmpeg 是可以指定 ffmpeg 的路径的, 并且默认是就是调用操作系统环境变量里的 ffmpeg ,我对比了使用 nodejs 版的 ffmpeg( https://www.npmjs.com/package/ffmpeg-static)和操作系统里的 ffmpeg 得到的结果一致 所以结论是,ffmpeg 是否原生与时间差异无关 |
5
nathanleeinph OP |