【问题标题】:Mplayer and pipe streamingMplayer 和管道流
【发布时间】: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 作为来自命名管道的流播放器有什么建议吗?

【问题讨论】:

    标签: bash fifo mplayer


    【解决方案1】:

    你检查过这个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...

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

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

    【讨论】:

    • 嗨@RiccardoPetraglia,谢谢 - 恐怕这不会产生所需的行为,即在我输入数据时播放数据。但也许这不是 mplayer 的本意 :)
    猜你喜欢
    • 2011-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-28
    • 2013-07-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多