如何在使用VLC虚拟接口时阻止显示控制台

时间:2011-05-14 09:49:02

标签: windows node.js subprocess vlc child-process

我正在尝试从Node.js服务器脚本以“虚拟”模式启动VLC,但是在使用Windows时,使用child_process.spawn('vlc',['-I dummy'])会为VLC的输出生成一个新的控制台窗口。有没有办法防止这种情况发生并通过stdout ReadableStream强制所有stdout,所以不会出现“弹出窗口”?

编辑:这个问题与node.js无关,只是我调用它的方式和VLC的行为。解决方案如下。

感谢。

3 个答案:

答案 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'])来运行该过程?