2014-07-06 245 views
0

我正在嘗試爲node.js上的beaglebone上的mplayer創建webscket控件包裝。 我的WebSocket服務器一瞥看起來艾克這樣的:node.js mplayer fifo控制

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; 
     } 

    }); 
}); 

MPlayer的過程可以正常啓動,我可以從揚聲器聽到音樂,但問題是,我無法通過選定的FIFO發送任何命令mplayer的過程。 當我在linux終端中嘗試相同的命令時,它工作得很好,所以我認爲它與node.js過程exec部分有關。

我對linux或node.js沒有多少經驗,我寫的大部分代碼都是基於代碼示例和教程。

任何人都可以解釋發生了什麼,爲什麼我不能通過FIFO發送播放命令到使用node.js的mplayer進程?

謝謝。

回答