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

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

编辑 :这个问题与node.js没有任何关系,只是我调用它的方式和VLC的行为。 解决scheme如下。

谢谢。

Solutions Collecting From Web of "使用VLC的虚拟接口时如何防止显示控制台"

我找到了一个针对特定问题的解决方案:

VLC有一个命令行选项来抑制这个窗口 – * – 安静,其中*是接口。

例如对于虚拟接口,使用

 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 '])

回答6月13日在14:12亚当MW

至少在我的系统中, 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'])来运行这个进程呢?