일부 rtmp 스트리밍을 재생하고 녹음하기 위해 하나의 프로그램을 개발하려고합니다. 이 프로그램은 Qt에서 개발되었습니다.여러 개의 FIFO가있는 Linux tee 명령. fifo blocks tee
저는 rtmpdump 및 mplayer를 사용하고 있습니다. 둘 다 별도의 프로세스에서 실행되기 때문에, 나는 rtmpdump에서 mplayer로 스트림을 전달하기 위해 FIFO를 사용하고 있습니다. mplayer는 사용자가 제어해야하므로 별도의 프로세스가 필요합니다. 그래서 mplayer는 슬레이브 모드로 실행됩니다.
스트림 재생에 문제가 없습니다.
이제 스트림을 다른 파일에 녹화하려고합니다. 나는 그것을하기 위해 mplayer를 사용할 수 있다는 것을 알고 있습니다. 그러나 단일 mplayer를 사용하면 재생 또는 녹음 만 지원하므로 불가능합니다. 그래서 tee 명령을 사용하여 스트림을 분할하고 녹음 및 재생 용으로 2mplayer 프로세스를 사용할 것을 고려했습니다.
현재 스트림이
rtmpdump | tee fifo_for_playing fifo_for recording
MPlayer는 하나가 fifo_for_playing를 판독하고, 또 다른 fifo_for_recording을 읽고 같이 흐른다.
이제는 문제가됩니다. 사용자가 녹음 버튼을 누르면 녹음 할 mplayer가 시작되므로 fifo_for_recording은 티가 열리지 않을 때이를 차단합니다. 그래서 연주도 시작되지 않습니다.
누구나 솔루션을 제안하거나 더 좋은 방법으로이를 수행 할 수 있습니까? 내가 뭘하려고하는지는 비 차단 FIFO를 가진 티입니다. 따라서 하나의 FIFO가 열리지 않으면 티가 차단되지 않습니다.