【发布时间】:2016-11-16 16:53:14
【问题描述】:
我想使用 mplayer 通过命名管道播放文件流。
来自here 我读到MPlayer 可以从标准输入(非命名管道)读取。
命名管道仍然可以通过这种方式在 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 作为来自命名管道的流播放器有什么建议吗?
【问题讨论】: