我想执行一个 bash 脚本来执行以下操作:
应用程序“ffmpeg”生成实时传输流 (.ts) 文件。我需要处理这个实时流(执行解复用等)。
现在我知道这必须通过 FIFO 来完成;但这是我的任务。
我需要重定向 ffmpeg 的输出以写入 fifo,然后另一个应用程序将处理该 fifo 内容。这种情况会持续实时发生,直到我按下 Ctrl+C。
这可能吗?
我必须在两个终端上这样做吗?
我基本上是为上述操作(以及更多操作)编写一个 bash 脚本,所以我是否必须调用两个终端,或者可能是 fork?
好心提醒。
提前致谢!
FFmpeg 支持管道。
您所要做的一切都是按如下方式进行的:
-
做一个先进先出
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 个工具,只需杀死最后一个使用管道/fifo 的工具即可。在这种情况下,你必须杀死 tscbrmuxer。
kill tscbrmuxer
OR
如果您没有在后台运行最后一个工具,只需使用 [ctrl+c] 将其终止
由于使用了这种方法(例如,作为 shell 脚本或 Python 脚本),所有使用管道/fifo 的工具都将因管道损坏而终止。
我希望这能帮到您。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)