我尝试从Node.js服务器脚本以“虚拟”模式启动VLC,但是使用child_process.spawn('vlc',['-I dummy'])
会在使用Windows时为VLC的输出生成一个新的控制台窗口。 有没有办法来防止这种情况发生,并通过标准输出ReadableStream强制所有的标准输出,所以没有“popup窗口”发生?
编辑 :这个问题与node.js没有任何关系,只是我调用它的方式和VLC的行为。 解决scheme如下。
谢谢。
我找到了一个针对特定问题的解决方案:
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'])
来运行这个进程呢?