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.

Était-ce utile?

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?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top