Как предотвратить отображение консоли при использовании фиктивного интерфейса VLC - PullRequest
2 голосов
/ 14 мая 2011

Я пытаюсь запустить VLC в режиме «dummy» из серверного сценария Node.js, однако использование child_process.spawn('vlc',['-I dummy']) создает новое окно консоли для вывода VLC при использовании Windows.Есть ли способ предотвратить это и принудительно запустить весь stdout через stdout ReadableStream, чтобы «всплывающие окна» не появлялись?

EDIT : эта проблема не имеет ничего общего с node.js, онабыл просто способ, которым я назвал это и поведение VLC.Решение ниже.

Спасибо.

Ответы [ 3 ]

5 голосов
/ 13 июня 2011

Я нашел решение для конкретной проблемы:

VLC имеет параметр командной строки, чтобы закрыть это окно - * - quiet где * - интерфейс.

Например, для фиктивного интерфейса, используйте

child_process.spawn('vlc',['-I dummy','--dummy-quiet'])

Для интерфейса rc используйте

child_process.spawn('vlc',['-I rc','--rc-quiet'])
1 голос
/ 07 июля 2013

Я хотел бы дополнить ответ Адама М-З.

VLC имеет параметр командной строки для подавления этого окна - * - quiet, где * - интерфейс.

например. Для фиктивного интерфейса используйте

child_process.spawn (' vlc ', [' -I dummy ', ' - dummy-quiet ']) Для rc интерфейс, используйте

child_process.spawn (' vlc ', [' -I rc ', ' - rc-quiet '])

ответил 13 июня '11 в 14:12 Адам М-Ш

по крайней мере, в моей системе VLC теперь отправляет свои сообщения на stdError , так что это канал, который необходимо отслеживать.

Мой интерфейс с Qt, QtProcess, и эти опции работали для меня.

Использование Объединенные каналы и чтение 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;
}

Использование Отдельных каналов и чтение 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;
}
0 голосов
/ 14 мая 2011

Может быть, вы могли бы запустить процесс с child_process.spawn('start', ['/b', 'vlc', '-I dummy']) вместо?

...