node.js mplayer fifo управление

Я пытаюсь создать оболочку управления webscket для mplayer на beaglebone с помощью node.js. Проблеск моего сервера веб-сокета выглядит так:

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 запускается корректно и я слышу музыку из динамиков, но проблема в том, что я не могу отправить никакие команды процессу mplayer через выбранный fifo. Когда я пробую те же команды в терминале linux, он работает просто отлично, поэтому я предполагаю, что это как-то связано с исполнительной частью процесса node.js.

У меня нет большого опыта работы с linux или node.js, и большая часть кода, который я написал, основана на примерах кода и руководствах.

Кто-нибудь может объяснить, что происходит и почему я не могу отправить команду воспроизведения через fifo в процесс mplayer с помощью node.js?

Спасибо.


person user3809046    schedule 06.07.2014    source источник


Ответы (1)


вам нужно добавить новую строку в команду echo

'эхо "пауза" > /home/root/.mplayer/mplayer_fifo\n'

Я попробовал это на rpi и bbb, и это работает, информация здесь http://sonnycruz.blogspot.com

person user3856968    schedule 20.07.2014