首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mplayer无法从golang获得stdin流。

mplayer无法从golang获得stdin流。
EN

Stack Overflow用户
提问于 2016-02-24 02:00:20
回答 1查看 521关注 0票数 0

我想为Linux编写一个简单的命令行m3u8播放器。(如果已经有了,请告诉我。)

m3u8文件中有几个ts文件urls。m3u8文件是从网络中动态更改的。通常,一个ts文件只有几秒钟的时间。所以我需要一次又一次地下载m3u8文件和ts文件。然后,我使用mplayer继续播放流。我想这是个网络收音机。

以下是我所做的:

首先,我对mplayer进程进行了分析,得到了stdin:

代码语言:javascript
复制
mplayer_cmd := exec.Command("sh", "-c", "mplayer -msglevel all=9 -cache 80 -")
mplayer_writer, mplayer_err := mplayer_cmd.StdinPipe()

然后,我在其中获取m3u8文件和ts urls,并将ts文件的内容写入mplayer的stdin。我一次又一次地做这一步:

代码语言:javascript
复制
out, err = exec.Command("sh", "-c", "wget " + m3u8_url + " -qO - | grep '.ts'").Output()
...
out, err = exec.Command("sh", "-c", "wget " + ts_url + " -qO -").Output()
...
n, err = mplayer_writer.Write(out)
fmt.Println("wrote ", n)

没有声音从mplayer发出。与从命令行成功运行的情况相比,存在这样的相关错误消息:

代码语言:javascript
复制
Cache empty, consider increasing -cache and/or -cache-min. [performance issue]

一个可疑的信息是- mplayer在lauch时分叉一个子进程。在这种情况下,水管会坏吗?

代码语言:javascript
复制
 | |       \-+- 03027 hgneng mplayer -msglevel all=9 -cache 80 -
 | |         \--- 03033 hgneng mplayer -msglevel all=9 -cache 80 -
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-24 08:19:07

抱歉,是我的错。我把mplayer的stdout管道放在某个地方进行调试。但是,代码挂在那里,因为没有输出。我是用godebug找到的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35591888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档