Mplayer和管道流媒体

时间:2016-11-16 16:53:14

标签: bash fifo 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用作命名管道中的流播放器的任何建议吗?

1 个答案:

答案 0 :(得分:0)

您是否检查了此one?在您的情况下,您应该封装所有cat命令:

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 ...

老实说,我不确定这是答案,但评论太长了......:)

如果这样可行,主要缺点是内存使用......