我正在尝试从 Node.js 服务器脚本以“虚拟”模式启动 VLC,但是child_process.spawn('vlc',['-I dummy'])
在使用 Windows 时使用会为 VLC 的输出生成一个新的控制台窗口。有没有办法防止这种情况发生并通过标准输出 ReadableStream 强制所有标准输出,这样就不会出现“弹出窗口”?
编辑:这个问题与 node.js 无关,这只是我调用它的方式和 VLC 的行为。解决方案如下。
谢谢。
我正在尝试从 Node.js 服务器脚本以“虚拟”模式启动 VLC,但是child_process.spawn('vlc',['-I dummy'])
在使用 Windows 时使用会为 VLC 的输出生成一个新的控制台窗口。有没有办法防止这种情况发生并通过标准输出 ReadableStream 强制所有标准输出,这样就不会出现“弹出窗口”?
编辑:这个问题与 node.js 无关,这只是我调用它的方式和 VLC 的行为。解决方案如下。
谢谢。
我找到了针对特定问题的解决方案:
VLC 有一个命令行选项来隐藏这个窗口 --*-quiet 其中 * 是接口。
例如对于虚拟接口,使用
child_process.spawn('vlc',['-I dummy','--dummy-quiet'])
对于 rc 接口,使用
child_process.spawn('vlc',['-I rc','--rc-quiet'])
我想补充 Adam MW 的回答。
VLC 有一个命令行选项来抑制这个窗口 --*-quiet 其中 * 是接口。
例如对于虚拟接口,使用
child_process.spawn(' vlc ',[' -I dummy ',' --dummy-quiet ']) 对于rc接口,使用
child_process.spawn(' vlc ',[' -I rc ', '--rc -quiet '])
Adam MW 于 2011 年 6 月 13 日 14:12 回答
至少在我的系统上, 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;
}
也许您可以改为运行该过程child_process.spawn('start', ['/b', 'vlc', '-I dummy'])
?