将视频文件从ffmpeg直接输出到Google云存储 [英] Output a video file from ffmpeg directly to google cloud storage
问题描述
问题背景
我们正尝试在托管在Google App engine(GAE)中的服务器中使用FFmpeg压缩视频。输入文件在Google Cloud Storage(GCS)中,它可以很容易地作为输入传递到FFmpeg,并且处理已经完成,但是,我想直接将文件输出到GCS。我已经引用了这里的文档https://ffmpeg.org/ffmpeg-protocols.html#http,他们提供并使用了正确的头和方法来使用签名的URL上传文件,但它似乎不起作用。到目前为止,我甚至不确定这是否可能。
当前实施
目前,我们先将输出文件保存在GAE工作区中,然后将文件上传到存储桶中。在我们遇到另一个问题之前,这个流程运行得很好。当文件太大时,处理时间超过10分钟,这似乎是灵活环境下自动伸缩实例的阈值。要解决这个问题,我们可以在标准环境中使用BASIC_Scaling,但是在那里我们似乎不能在GAE工作区中编写文件。我可以选择写入/tmp
目录,但它使用RAM,我们可以一次上载许多文件,因此这不是一个选项。
可能的未来
目前我看到的一种解决方案是使用具有手动伸缩功能的灵活环境,但在伸缩和成本效益方面,这不是一个好主意。另一个我不太确定的是使用Google Compute Engine,但我还没有尝试这个。
结论
由于无法从FFmpeg向Google Cloud Storage发出PUT请求而引发的问题让我经历了数十个围绕GAE及其实例和功能集的奇怪组合的问题。
如果我遗漏了什么,我将非常感谢您的建议或可能的解决方案。如果我们能让FFmpeg将文件输出到GCS就好了。
推荐答案
如果选择使用计算引擎。您可以选择很多选项,具体取决于您选择的编程语言。
您可以从NodeJS将内容上传到Google Storage,也可以从NodeJS使用FFMpeg库。这两个文件都没有实际保存文件。直接从输入文件传输/流式传输到Google云存储。
更多信息:
节点的FFmpeg模块。该库提供一组函数和实用程序来抽象ffmpeg的命令行用法。要使用该库,需要已安装ffmpeg(包括所有必要的编码库,如libmp3lame或libx264)
https://www.npmjs.com/package/ffmpeg
createWriteStream(Optionsopt)→{WritableStream} 创建可写流以覆盖存储桶中文件的内容。
https://www.npmjs.com/package/@google-cloud/storage
这篇关于将视频文件从ffmpeg直接输出到Google云存储的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!