V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
nathanleeinph
V2EX  ›  FFmpeg

使用 nodejs 调用和在 macos 终端里直接调用 ffmpeg 转 m3u8,两者花费时间相差巨大

  •  
  •   nathanleeinph · 2023-09-15 19:15:00 +08:00 · 1454 次点击
    这是一个创建于 416 天前的主题,其中的信息可能已经有所发展或是发生改变。

    对于同一个 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 只使用了单线程的关系??

    5 条回复    2023-09-15 21:15:01 +08:00
    zcf0508
        1
    zcf0508  
       2023-09-15 19:22:13 +08:00 via Android
    nodejs 使用的应该是 wasm 版本的 ffmpeg ,不是原生的
    xiangyuecn
        2
    xiangyuecn  
       2023-09-15 19:23:05 +08:00
    终端命令有问题,2.8g 的视频,30 秒转码成 mp4 想想都不可能,估计只是用 mp4 容器简单封装了一下 ts 数据

    21 分钟时间上倒是合理,进行了 mp4 转码
    renmu
        3
    renmu  
       2023-09-15 19:23:49 +08:00 via Android
    你的问题,把 start 回调里的命令放出来
    nathanleeinph
        4
    nathanleeinph  
    OP
       2023-09-15 21:08:15 +08:00
    @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 是否原生与时间差异无关
    nathanleeinph
        5
    nathanleeinph  
    OP
       2023-09-15 21:15:01 +08:00
    @xiangyuecn
    @renmu

    感谢两位的指出,确实是我的问题。。。。

    nodejs 版多了一个 format('mp4')

    在电脑前坐太久确实头昏脑胀犯低级错误,浪费大家时间了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5745 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 03:35 · PVG 11:35 · LAX 19:35 · JFK 22:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.