2014-07-06 5 views
0

J'essaie de créer un wrapper de contrôle webscket pour mplayer sur beaglebone avec node.js. Un aperçu de mon serveur websocket ressemble lke ceci:node.js mplayer fifo control

io.sockets.on('connection', function (socket) 
{ 
    SaveToLog('Client ' + clientAddress + ' connected.'); 
    /* Function used to control the LEDs according to HTML file */ 

    allClients.push(socket); 

    socket.on('miro_server', function (device, command) 
    { 
     SaveToLog(device + ' ' + command); 

     switch (device) 
     { 
     case 'mplayerStatus': 
      if(command == 'PLAYSELECTED') 
      { 
       ls = childProcess.exec('mplayer -slave -quiet -input      file=/home/root/.mplayer/mplayer_fifo /home/root/agalloch.mp3', 
        function (error, stdout, stderr) 
        { 
         console.log('stdout: ' + stdout); 
         console.log('stderr: ' + stderr); 
         if (error !== null) 
         { 
          console.log('exec error: ' + error); 
         } 
        }); 

        ls.on('exit', function (code) 
        { 
         console.log('Child process exited with exit code '+code); 
        }); 
       } 
      else /* PAUSE */ 
      { 
       childProcess.exec('echo "pause" > /home/root/.mplayer/mplayer_fifo', 
        function (error, stdout, stderr) 
        { 
         console.log('stdout: ' + stdout); 
         console.log('stderr: ' + stderr); 
         if (error !== null) 
         { 
          console.log('exec error: ' + error); 
         } 
        }); 
      } 
      break; 
     } 

    }); 
}); 

Le processus de mplayer démarre correctement et je peux écouter de la musique des haut-parleurs, mais le problème est que je ne peux pas envoyer des commandes au processus de MPlayer via le fifo sélectionné . Lorsque j'essaie les mêmes commandes dans le terminal Linux, cela fonctionne très bien, donc je présume qu'il a quelque chose à voir avec la partie exec de node.js.

Je n'ai pas beaucoup d'expérience avec linux ou node.js, et la plupart du code que j'ai écrit est basé sur des exemples de code et des tutoriels.

Quelqu'un peut-il expliquer ce qui se passe et pourquoi je ne peux pas envoyer de commande de lecture via fifo au processus mplayer en utilisant node.js?

Merci.

Répondre

0

vous devez ajouter une nouvelle ligne à la commande echo

« echo « pause »> /home/root/.mplayer/mplayer_fifo\n »

J'ai essayé sur IPD et bbb et il fonctionne info ici http://sonnycruz.blogspot.com