我试图从Node.js服务器脚本以“虚拟”模式启动VLC,但是使用child_process.spawn('vlc',['-I dummy'])
会在使用Windows时为VLC的输出生成新的控制台窗口。有没有办法来防止这种情况发生,并通过标准输出ReadableStream强制所有stdout,所以没有“弹出窗口”发生?如何防止在使用VLC的虚拟接口时显示控制台
编辑:这个问题与node.js无关,它只是我称之为的方式和VLC的行为。解决方案如下。
谢谢。
我试图从Node.js服务器脚本以“虚拟”模式启动VLC,但是使用child_process.spawn('vlc',['-I dummy'])
会在使用Windows时为VLC的输出生成新的控制台窗口。有没有办法来防止这种情况发生,并通过标准输出ReadableStream强制所有stdout,所以没有“弹出窗口”发生?如何防止在使用VLC的虚拟接口时显示控制台
编辑:这个问题与node.js无关,它只是我称之为的方式和VLC的行为。解决方案如下。
谢谢。
我发现的具体问题的解决方案:
VLC有一个命令行选项来surpress此窗口 - * - 安静其中*接口。
例如对于虚拟接口,使用
child_process.spawn('vlc',['-I dummy','--dummy-quiet'])
对于RC接口,使用
child_process.spawn('vlc',['-I rc','--rc-quiet'])
也许你可以用child_process.spawn('start', ['/b', 'vlc', '-I dummy'])
来代替这个过程?
我想补充亚当M-WC答案。
VLC有一个命令行选项来抑制这个窗口 - * - quiet其中*是接口。
例如用于虚设接口,使用
child_process.spawn( 'VLC ',[ '-I虚设', '--dummy静音'])为RC 接口,使用
child_process.spawn( 'VLC ',[ '-I RC', '--rc静音'])
回答菊Ñ13 '11在14:12 亚当M-WC
至少在我的系统, 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;
}
我注意到,-I Telnet不弹出控制台,所以我会使用它代替。 – 2011-05-14 13:32:30
但是,telnet界面是没用的 - 我宁愿使用RC界面,但是它有与新窗口相同的问题 - 更糟糕的是stdin stdout似乎不起作用 – 2011-05-14 14:15:52