Как предотвратить отображение консоли при использовании фиктивного интерфейса VLC


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

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

Спасибо.

3 2

3 ответа:

Я нашел решение для конкретной задачи:

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

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

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

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

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

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

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

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

Child_process.spawn ('vlc',['-я болван','--dummy-quiet']) для rc интерфейс, использовать

Child_process.spawn ('vlc',['-я ру','--rc-тихий'])

Ответил 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;
}

Использование отдельные каналы и чтение 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']) вместо этого?