如何将 FLV 编码为临时文件,然后使用 FFMpeg 将其输出到标准输出?

如何将 FLV 编码为临时文件,然后使用 FFMpeg 将其输出到标准输出?

我知道 ffmpeg 支持管道。我正在尝试实现这个答案引述如下

如果您愿意接受一个不能真正流式传输结果帧但仍符合您的规范(从 URL 资源读取 FLV、将 MP4 输出到标准输出)的解决方案,您可以随时尝试先将 FLV 编码为临时文件,然后将其输出到标准输出。

我是否可以通过类似这样的管道使用 ffmpeg 来实现这一点?

ffmpeg -i "%s" -c:v libx264 -c:a copy -f mp4 temp.mp4 | -

答案1

您几乎已经完成了。您已经成功将输入文件编码为名为 的 MP4 文件temp.mp4

ffmpeg -i "%s" -c:v libx264 -c:a copy -f mp4 temp.mp4

要将结果文件读至标准输出(一旦文件完全写入),您可以使用cat

cat temp.mp4

要将两者结合起来,请使用&&运算符(这使得仅当第一个命令成功时才执行第二个命令):

ffmpeg -i "%s" -c:v libx264 -c:a copy -f mp4 temp.mp4 && cat temp.mp4

然后,您可以将此命令的输出传送到您喜欢的任何程序。

请注意,一般来说,cat当其他程序本身支持读取相应文件时,这种模式(例如,仅读取文件并将其导入另一个程序)是不受欢迎的。temp.mp4尽可能将其作为输入文件传递给使用程序。

相关内容