Bash 使用mkfifo和传输流,这可能吗?

Bash 使用mkfifo和传输流,这可能吗?,bash,ffmpeg,stream,named-pipes,transport,Bash,Ffmpeg,Stream,Named Pipes,Transport,我想执行一个bash脚本,该脚本将执行以下操作: 应用程序“ffmpeg”生成实时传输流(.ts)文件。我需要在这个实时的streaam上工作(执行解复用等) 现在我知道这必须通过FIFO来完成;但这是我的任务 我需要重定向ffmpeg的输出以写入fifo,然后另一个应用程序将处理该fifo内容。这种情况持续实时发生,直到我按下Ctrl+C 这可能吗? 我要在两个终点站做这个吗 我基本上是在为上述操作(以及更多操作)编写bash脚本,那么我是否必须调用两个终端,或者可能是fork 请告知 提前谢

我想执行一个bash脚本,该脚本将执行以下操作:

应用程序“ffmpeg”生成实时传输流(.ts)文件。我需要在这个实时的streaam上工作(执行解复用等)

现在我知道这必须通过FIFO来完成;但这是我的任务

我需要重定向ffmpeg的输出以写入fifo,然后另一个应用程序将处理该fifo内容。这种情况持续实时发生,直到我按下Ctrl+C

这可能吗? 我要在两个终点站做这个吗

我基本上是在为上述操作(以及更多操作)编写bash脚本,那么我是否必须调用两个终端,或者可能是fork

请告知

提前谢谢

FFmpeg确实支持管道。 您所要做的一切都是按如下方式进行的:

  • 先进先出

    mkfifo first.ts  
    
  • 用管子跑

    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的工具。万一你要杀了Tsbrmuxer

    kill tscbrmuxer
    

    如果您没有在后台运行最后一个工具,只需使用[ctrl+c]将其杀死即可

  • 由于使用了这种方法(例如,作为shell脚本或Python脚本),所有使用管道/fifo的工具都将由于管道破裂而终止


    我希望这会对您有所帮助。

    什么不只是使用管道?ffmpeg不支持管道;至少没有命名管道。另外,我必须同时将三个ffmpeg实例运行到三个不同的管道,然后将这三个管道作为第四个ffmpeg实例的输入,该实例将它们组合在一起。ffmpeg绝对支持管道。