我想使用mplayer通过一个指定的管道来播放文件流。
在这里中,我看到MPlayer可以从stdin (没有命名管道)读取。
命名管道仍然可以以这种方式在bash脚本中使用:
mkfifo pipe
cat pipe | mplayer -cache 1024 -cache-min 10 -really-quiet - &
cat test.wav > pipe这方面的问题是,在mplayer接收到EOF之后,它就会退出,并且我不能传递多个文件,而我希望mplayer继续通过管道播放文件。这个问题在某种程度上类似于这,它启发了下面的脚本,以便保持管道的打开:
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作为来自指定管道的流播放器,有什么建议吗?
发布于 2016-11-16 17:07:19
你查过这个一了吗?在您的示例中,您应该封装所有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.
老实说,我不确定这就是答案,但太长了,不能发表评论……:)
如果这样可以的话,主要的缺点是内存的使用.
https://stackoverflow.com/questions/40637808
复制相似问题