【问题标题】:ffmpeg spawned inside NodeJS doesn't output to a url在 NodeJS 中生成的 ffmpeg 不会输出到 url
【发布时间】:2020-12-19 04:30:46
【问题描述】:

我正在尝试在 Google Cloud(云功能)上运行 ffmpeg,并尝试让它将文件输出到(Google 存储的)URL。

我在 NodeJS 中生成 ffmpeg,如下所示:

const { spawn } = require('child_process');

spawn('ffmpeg', [
        '-i', 'input.mp4',
        // ... other arguments
        '-f', 'mp4',
        '-movflags', 'frag_keyframe+empty_moov' // needed for a URL output
        '-headers', `'Authorization: Bearer ${token}'`
        'https://storage.googleapis.com/upload/storage/v1/b/...'])

问题是文件永远不会被上传,即使 ffmpeg 运行并以代码 0 退出。

奇怪的是,如果我直接从终端运行完全相同的命令,它会上传文件。

ffmpeg -i input.mp4 -f mp4 -movflags frag_keyframe+empty_moov -headers 'Authorization: Bearer XXX' 'https://storage.googleapis.com/upload/storage/v1/b/...'

我认为,这消除了任何身份验证问题或服务器端发生任何事情的可能性。

我在输出 (stderr) 中看不到任何差异。

知道为什么 Node 版本不上传输出并且不报告任何错误吗?

【问题讨论】:

    标签: node.js google-cloud-platform ffmpeg


    【解决方案1】:

    有效的修复方法(尽管我不清楚为什么需要它)是在 shell 中生成进程:

    spawn('ffmpeg', [
            '-i', 'input.mp4',
            // ... other arguments
          ], 
          { shell: true })
    

    【讨论】:

      猜你喜欢
      • 2017-10-19
      • 1970-01-01
      • 1970-01-01
      • 2016-07-23
      • 1970-01-01
      • 2016-04-02
      • 1970-01-01
      • 2014-04-05
      • 1970-01-01
      相关资源
      最近更新 更多