Comment empêcher l'affichage de la console lors de l'utilisation de l'interface factice de VLC
-
13-11-2019 - |
Question
J'essaie de lancer VLC en mode "factice" à partir d'un script serveur Node.js, mais en utilisant child_process.spawn('vlc',['-I dummy'])
produit une nouvelle fenêtre de console pour la sortie de VLC lors de l'utilisation de Windows.Existe-t-il un moyen d'empêcher que cela ne se produise et de forcer toutes les sorties standard via la sortie standard ReadableStream afin qu'aucune « fenêtre contextuelle » ne se produise ?
MODIFIER:Ce problème n'avait rien à voir avec node.js, c'était simplement la façon dont je l'appelais et le comportement de VLC.La solution est ci-dessous.
Merci.
La solution
J'ai trouvé une solution pour le problème spécifique:
VLC a une option de ligne de commande pour surpresser cette fenêtre - * - calme où * est l'interface.
E.g.Pour l'interface factice, utilisez
child_process.spawn('vlc',['-I dummy','--dummy-quiet'])
pour l'interface RC, utilisez
child_process.spawn('vlc',['-I rc','--rc-quiet'])
Autres conseils
Je voudrais compléter la réponse Adam M-W.
VLC a une option de ligne de commande pour supprimer cette fenêtre - * - calme où * est l'interface. E.g. Pour l'interface factice, utilisez
enfant_process.spawn (' VLC ', ['
-I DUMMY ', ' - DUMMY-PIMINE ']) pour le rc Interface, utilisation enfant_process.spewn (' VLC ', [' -i rc ', ' - rc-silencieux '])
RÉPONDUÉ LE JUIN 13 '11 à 14:12 Adam M-W
au moins sur mon système, VLC envoie désormais ses messages à stderror , il s'agit donc du canal qui doit être surveillé.
Mon interface est avec QT, QTProcess et ce sont les options qui ont fonctionné pour moi.
Utiliser
fusibleCannels et lisant 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; }
Utilisation
Séparatecannels et lecture stdorror 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; }
Peut-être pourriez-vous exécuter le processus avec child_process.spawn('start', ['/b', 'vlc', '-I dummy'])
plutôt?