我想执行一个执行以下操作的bash脚本:
应用程序'ffmpeg'生成LIVE传输流(.ts)文件。我需要处理这个实时流式传输(执行解复用等)。
现在我知道这必须通过FIFO完成;但这是我的任务。
我需要重定向ffmpeg的输出以写入fifo,然后另一个应用程序将处理该fifo内容。这种情况会持续发生,直到我按下,然后按Ctrl + C.
这可能吗? 我必须做两个终端吗?
我基本上是为上述操作编写一个bash脚本(以及更多),所以我必须调用两个终端,或者可能是fork吗?
请告知。
提前致谢!
答案 0 :(得分:1)
FFmpeg确实支持管道。 你必须做的一切都是如下:
制作一个fifo
mkfifo first.ts
使用管道运行ffmpeg
ffmpeg -i sample.ts -c copy -muxrate 5000000 pipe:1 > first.ts
运行任何其他适用于传输流文件的工具,例如OpenCaster工具tscbrmuxer可以添加例如NIT表传输流文件
tscbrmuxer b:3008 NIT.ts b:5000000 first.ts > second.ts
如果你想停止2个工具,只需杀掉最后一个使用pipe / fifo的工具。在你不得不杀死tscbrmuxer的情况下。
kill tscbrmuxer
OR
如果你没有在后台运行最后一个工具,只需用[ctrl + c]
由于使用了这种方法(例如shell脚本或Python脚本),所有使用pipe / fifo的工具都会因管道损坏而终止。
我希望这会对你有所帮助。