我可以将多个 ffmpeg 输出通过管道传输到不同的管道吗?

Posted

技术标签:

【中文标题】我可以将多个 ffmpeg 输出通过管道传输到不同的管道吗?【英文标题】:Can I pipe multiple ffmpeg outputs to different pipes? 【发布时间】:2021-03-03 20:41:29 【问题描述】:

我有一个 AWS 工作流程,可将音频或视频文件从 S3 流式传输到 lambda 内的 ffmpeg。然后将编码输出流回 S3。我想扩展该流程以生成 DASH 内容。在我的本地设备上,我可以生成 MPD 文件和编码的 AV 文件。这就是问题所在。对 dash 进行编码至少会生成两个文件,即使使用 -single_file 标志也是如此。

我可以将破折​​号导出限制为仅视频或 MPD 文件吗?或者我可以通过某种标志魔法以某种方式分别管道多个输出吗?

提前致谢。

【问题讨论】:

导出视频文件和MPD文件有什么问题?你想达到什么目的? 目前,系统无需将文件直接保存到连接到 AWS lambdas 的小硬盘空间即可工作。一次将输入文件从 S3 和编码文件流式传输回 S3,而不会触及其间的空间。这样它就可以处理比 512 MB lambas 获得的文件大得多的文件。我正在尝试为破折号文件复制该行为。 【参考方案1】:

在这里橡皮鸭?之后,我发现了一个致命的缺陷,阻止我只使用 lambda 服务创建直接升级,需要我迁移到 ECS 容器。现在在那种环境中,我可以访问“无限”的 CPU 时间和硬盘空间。所以我不需要来回传输结果。这并没有回答我的问题,但它解决了让我问它的问题。

至于实际的答案,我不相信可以告诉破折号编码器管道特定文件。管道 ffmpeg 输出只是 MPD 文件本身,对我的需求没有帮助。由于我使用的是 node 和 fluent-ffmpeg,我可以使用进度事件来装配我自己的外部流,将硬盘驱动器上的编码文件传送到目的地,再加上一点清理魔法,因为 mp4 想要在结尾。但是,与运行配备 64gb 硬盘的 ECS 容器每小时 0.02 美元相比,编写玻璃大炮需要花费大量的工时。

【讨论】:

以上是关于我可以将多个 ffmpeg 输出通过管道传输到不同的管道吗?的主要内容,如果未能解决你的问题,请参考以下文章

使用python将opencv图像通过管道传输到ffmpeg

将 ffmpeg 流通过管道传输到 sox rec

使用管道将文件 i/o 传输到另一个进程

将原始 OpenCV 图像通过管道传输到 FFmpeg

使用 FFmpeg 通过管道输出视频片段

FFmpeg - 通过管道输入原始帧 - FFmpeg不检测管道关闭