Google app engine ffmpeg-won';无法在google应用程序引擎标准节点中正确执行

Google app engine ffmpeg-won';无法在google应用程序引擎标准节点中正确执行,google-app-engine,ffmpeg,fluent-ffmpeg,Google App Engine,Ffmpeg,Fluent Ffmpeg,我花了整整三天的时间让GAE(standard-nodejs)使用ffmpeg运行一个从MOV到MP4的简单视频转码器。我尝试过使用fflunt ffmpeg,启动一个子进程(例如spawn),但没有任何效果。一旦它调用了可执行文件,它总是出错。我已经确认安装了ffmpeg,甚至尝试使用ffmpeg静态。此外,我让它在本地机器上工作,没有任何问题(使用上述所有方法) 我也尝试过记录错误,但没有什么真正有用的。我可以通过任何安装的包看到它的工作,包括ffmpeg(系统包) 下面是伪代码…第三步是出

我花了整整三天的时间让GAE(standard-nodejs)使用ffmpeg运行一个从MOV到MP4的简单视频转码器。我尝试过使用fflunt ffmpeg,启动一个子进程(例如spawn),但没有任何效果。一旦它调用了可执行文件,它总是出错。我已经确认安装了ffmpeg,甚至尝试使用ffmpeg静态。此外,我让它在本地机器上工作,没有任何问题(使用上述所有方法)

我也尝试过记录错误,但没有什么真正有用的。我可以通过任何安装的包看到它的工作,包括ffmpeg(系统包)

下面是伪代码…第三步是出现问题的地方

  • 将文件名发送到GAE端点
  • 将文件从google云存储下载到临时文件
  • 使用ffmpeg进行转码
  • 将临时文件上载到谷歌云存储
  • 删除旧的google云存储文件
  • 删除临时文件
  • 我用来测试的文件是6MB…这是我在iPhone上拍摄的5秒视频。先谢谢你


    更新:我成功地将完全相同的代码部署到NodeFlex环境中,一切都很好。我在标准环境中找不到任何错误,但我猜这与它如何将我通过管道传输到GAE Node standard上的FFMPEG文件有关。文件说这是一个使用RAM的虚拟文件系统。我很想知道是否有人能在标准环境下工作

    没错,ffmpeg列在Node.js运行时的中

    但是他们没有提到安装了哪个ffmpeg版本

    我查看了,它需要
    ffmpeg>=0.9
    才能工作

    尝试运行以下命令更新ffmpeg版本:

    apt-get update ffmpeg 
    
    在实例的控制台中。告诉我们进展如何

    const outFile = bucket.file(`${storagePath}`)
    //create a referance to your storage bucket path
    const outStream = outFile.createWriteStream()
    
    您可以始终将“stderr”侦听器置于ffmpeg命令上。 我在谷歌应用程序引擎上也遇到过类似的转码问题,所以流畅的ffmpeg-stderr listener帮我调试了很多

    ffmpeg.addInput(`tmp/${app_engine_filepath})
    .format('mp3')
    .on('stderr', function(stderrLine) {
      console.log('Stderr output: ' + stderrLine);
    })
    .on('error, (error) => {
      console.log(error)
    })
    .pipe(outStream)
    .on('end', () => {
       fs.remove(`tmp/${app_engine_filepath}`)
    })
    

    您可能还希望在standart环境中检查ffmpeg版本。(这也可以通过stderlogs查看)

    经过一场漫长的战斗,我终于弄明白了到底发生了什么。我没有足够的计算资源。如果有人打算为图像和视频建立转码服务,请确保你的核心至少有4个。我的作业随机失败(但不能重复处理相同的文件),web套接字断开和重新连接,等等


    对于那些因为我没有发布错误(我说我没有发布错误)而将我的问题降级的人来说……好吧,当你的CPU因为无法跟上负载而开始丢弃作业时,日志中不一定会有错误。正如我在问题中提到的,我会得到错误,但没有任何意义。

    如果我们看不到它产生的错误,我们怎么知道出了什么问题?@dKorosec,我已经提到我尝试记录错误,但它们没有提供太多,否则我会发布它们。我的问题更倾向于在GAE标准节点运行时中使用FFMPEG。它是文档“包含的包”部分中列出的第一个包。看起来很奇怪,他们会包含一个在运行时配置中不可用的包。嘿,Tommy,你是在生成新的VM实例来处理每个视频,还是有一个专门用于编码的VM?如果是前者,您是以编程方式管理它,还是有一个GCP API使处理这样的作业更安全?我对管理虚拟机生成持谨慎态度,因为我不想最终陷入生成失控虚拟机实例的场景。谢谢。谢谢你的评论。我试过你上面的代码,但它不能与许多其他变体一起工作,在标准环境下也不能工作。你对哪一部分有问题?你能给ffmpeg打个电话吗?您在将ffmpeg安装到standart环境时遇到问题吗?我考虑过这一点,这就是为什么我尝试ffmpeg静态,但没有成功的原因;我们有4个内核,但仍在下降?你在Docker中运行吗?而且,一些过滤器可能会消耗大量内存。