Я пытаюсь разработать одну программу для воспроизведения и записи некоторых полос rtmp. Программа разработана в Qt.Linux tee команда с несколькими fifo. fifo blocks tee
Я использую rtmpdump и mplayer. так как обе работают в отдельном процессе, я использую fifo для передачи потока из rtmpdump в mplayer. Мне нужен отдельный процесс, потому что mplayer должен контролироваться пользователем. поэтому mplayer запущен в подчиненном режиме.
Это прекрасно работает для воспроизведения потока.
Теперь я хочу записать поток в другой файл. Я знаю, что могу использовать mplayer для этого. но использование одного mplayer невозможно, поскольку оно поддерживает только воспроизведение или запись. поэтому подумал об использовании команды tee для разделения потока и использования процесса 2 mplayer, один для записи и один для воспроизведения.
теперь течет поток, как это
rtmpdump | tee fifo_for_playing fifo_for recording
один MPlayer читает fifo_for_playing, а другой читает fifo_for_recording.
Проблема теперь в том, что mplayer, который должен записываться, начнется только тогда, когда пользователь нажмет кнопку записи, fifo_for_recording заблокирует тройник, поскольку он не открывается. поэтому игра также не начнется.
Может ли кто-нибудь предложить решение или лучший способ достичь этого? то, что я пытаюсь сделать, это тройник с не блокирующим fifo. так что даже если один fifo не открывается для чтения, он не будет блокировать тройник.