2016-11-16 4 views
0

mplayer를 사용하여 명명 된 파이프를 통해 파일 스트림을 재생하고 싶습니다.Mplayer 및 파이프 스트리밍

here 나는 을 읽었습니다. MPlayer는 stdin (명명 된 파이프가 아님)에서 읽을 수 있습니다.

명명 된 파이프는 여전히 bash는 스크립트에서이 방법을 사용할 수 있습니다 :

mkfifo pipe 
cat pipe | mplayer -cache 1024 -cache-min 10 -really-quiet - & 
cat test.wav > pipe 

이의 문제는 MPlayer와는 EOF를 수신 한 후, 그것을 종료와 나 '동안 둘 이상의 파일을 전달할 수 없다는 것입니다 파이프를 통해 파일을 계속 재생하려면 mplayer를 좋아하십시오. 문제는 파이프를 유지하는 것을 의미 다음 스크립트는, 영감을 연되는 this에 어떻게 든 비슷하다

mkfifo pipe 
cat pipe | mplayer -cache 1024 -cache-min 10 -really-quiet - & 
exec 3>pipe 
cat test1.wav >&3 
cat test2.wav >&3 
.. 
exec 3>&- # close the pipe 

파이프가 참으로 열려; 그러나 이제 mplayer의 캐시가 채워지더라도 파이프를 닫지 않으면 재생이되지 않습니다.이 경우 첫 번째 파일 만 재생됩니다. 파일 다음에 EOF 신호를 보내려고했습니다.

mkfifo pipe 
cat pipe | mplayer -cache 1024 -cache-min 10 -really-quiet - & 
exec 3>pipe 
cat test1.wav >&3 
echo >&3 
.. 
exec 3>&- # close the pipe 

그래도 운이 없습니다.

mplayer를 명명 된 파이프에서 스트림 플레이어로 사용하는 방법에 대한 제안 사항이 있으십니까?

답변

0

이것을 확인하셨습니까? one? 명령이 닫는 괄호는 또한 EOF를 보낼 만날 때이 대답은 확실하지 않다, 솔직히 ...

을 이런 식으로

mkfifo pipe 
cat pipe | mplayer -cache 1024 -cache-min 10 -really-quiet - & 
exec 3>pipe 
(cat test1.wav test2.wav) >&3 
3>&- # close the pipe 

: 귀하의 경우에 당신은 모든 cat 명령을 캡슐화한다 나는이 것 같군요 -하지만

:이 작동 할 경우, 주요 단점은 ...

+0

안녕 @RiccardoPetraglia 메모리 사용량, 그리고 감사 ... 코멘트 너무 길다 데이터를 입력 할 때 데이터를 재생하는 것이 바람직한 동작을 생성하지 않습니다. 하지만 어쩌면 이것은 단지 mplayer가하기위한 것이 아닙니다. :) –