Pipe

如果一個分支中斷,則繼續進行流分流

  • February 8, 2017

假設我將影片流分成 2 個ffplay程序

cat video.mp4 |  tee >(ffplay -i -) >(ffplay -i -) > /dev/null

現在,如果我終止其中一個ffplay程序,則流將停止,這不是我想要的。

ffplay如果第二個程序被殺死,如何修改此命令以繼續將影片流式傳輸到第一個程序?

PS:我正在尋找沒有命名管道(fifo)的解決方案

一個辦法

cat video.mp4 |  tee >(ffplay -i - || cat >/dev/null ) >(ffplay -i - || cat >/dev/null) > /dev/null

範例:要保存加密的網路攝像頭擷取並同時播放它,可能會殺死文件保存過程(openssl)或播放器(ffplay),我可以使用:

ffmpeg -f alsa -ac 2 -i plughw:0,0 -f video4linux2 -s vga -i /dev/video0 -f ogg - | tee >(openssl enc -k mypassword -aes-256-cbc > encrypted-capture.aes-256-cbc || cat >/dev/null) >(ffplay -fs -i - || cat >/dev/null) > /dev/null

您必須終止ffplay程序(按下f然後執行pkill ffplay),而不是關閉視窗Esc

引用自:https://unix.stackexchange.com/questions/343283