我正在生成一个命令来使用
mpg123
播放音频流,效果很好。我公开了一种终止进程的方法,该方法也运行良好,但我不知道如何从上述命令中获取输出。
子进程上没有触发任何事件
stdout
,按照文档它应该可以工作 - 这里可能是什么问题?
我发现的一个解决方案是将
stdio
的 spawn
属性设置为 inherit
,但随后 spawn
返回 null,这并不理想,因为我无法创建一个句柄来稍后杀死它。
我在 Node 10.24 的 Pi Zero 上运行它。
export const streamFactory = (cb: (data: string) => void) => {
try {
const st = spawn("mpg123", [configManager.getStreamUrl()]);
st.stdout.on("data", (data) => {
console.log(data);
cb(data);
});
return {
close: () => {
st.kill("SIGINT");
},
};
} catch (e) {
console.log(e);
}
};
由于某种原因,
mpg123
在stderr
上输出其数据,而不是在stdout
上。进行切换就像一个魅力,想想吧。