我試圖從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