我正在尝试从Node.js服务器脚本以“虚拟”模式启动VLC,但是在使用Windows时,使用child_process.spawn('vlc',['-I dummy'])
会为VLC的输出生成一个新的控制台窗口。有没有办法防止这种情况发生并通过stdout ReadableStream强制所有stdout,所以不会出现“弹出窗口”?
编辑:这个问题与node.js无关,只是我调用它的方式和VLC的行为。解决方案如下。
感谢。
答案 0 :(得分:5)
我找到了针对特定问题的解决方案:
VLC有一个命令行选项来压制这个窗口 - * - quiet,其中*是接口。
e.g。对于虚拟接口,请使用
child_process.spawn('vlc',['-I dummy','--dummy-quiet'])
对于rc界面,请使用
child_process.spawn('vlc',['-I rc','--rc-quiet'])
答案 1 :(得分:1)
我想补充Adam M-W的答案。
VLC有一个命令行选项来禁止显示此窗口 - * - quiet其中*是接口。
e.g。对于虚拟接口,请使用
child_process.spawn(' vlc ',[' -I dummy ',' - 虚拟安静'])对于rc 界面,使用
child_process.spawn(' vlc ',[' -I rc ',' - RC-安静强>'])
在6月13日和11月14日12点回答 Adam M-W
至少在我的系统上, VLC现在将其消息发送到 stdError ,因此这是需要监控的通道。
我的界面是Qt,QtProcess,这些选项对我有用。
使用 MergedChannels 并阅读 stdOut 。
m_proc->setProcessChannelMode(QProcess::MergedChannels);
connect (m_proc,SIGNAL(readyReadStandardOutput()),
this, SLOT(readyRead()));
void ReDirVLC::readyRead(){
if (!m_proc) return;
qDebug()<<m_proc->readAllStandardOutput() << endl;
}
使用 SeparateChannels 并阅读 stdError
m_proc->setProcessChannelMode(QProcess::SeparateChannels);
connect (m_proc,SIGNAL(readyReadStandardError()),
this, SLOT(readyRead()));
void ReDirVLC::readyRead(){
if (!m_proc) return;
qDebug()<<m_proc->readAllStandardError() << endl;
}
答案 2 :(得分:0)
也许您可以使用child_process.spawn('start', ['/b', 'vlc', '-I dummy'])
来运行该过程?