2016-11-16 139 views
0

我想用mplayer通過命名管道播放文件流。Mplayer和管道流

here我讀了MPlayer可以從標準輸入(非命名管道)讀取

命名管道仍然可以在bash腳本中使用這種方式:

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

這個問題是mplayer的接收到EOF後,它將退出,我無法通過一個以上的文件,而我d像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?老實說

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 

這樣,當命令滿足右括號也發送一個EOF ...

,我不知道這就是答案:在你的情況,你應該封裝所有的cat命令,但它是一個評論太長... :)

在這種情況下,將工作,主要的缺點是內存佔用...

+0

嗨@RiccardoPetraglia,並感謝 - 這恐怕會不會產生所需的行爲,即在輸入數據時播放數據。但是,也許這不僅僅是mplayer的本意:) –