Страница 1 из 8

Player Control

Добавлено: Чт ноя 28, 2013 9:29 am
ErmolenkoM
Обсуждение страницы Player Control

Re: Player Control

Добавлено: Чт ноя 28, 2013 10:10 am
ErmolenkoM
Добрый день!

Долго я бился, что бы Алиса заиграла музыку. Пробовал разные варианты. Рассказываю на чем остановился.

У меня МЖД установлена на Ubuntu. Медиаплеер использую VLC, он установлен на сервере и на клиенте.
Под виндой в настройках поставлена галка WEB (и задан пароль, без него не работает), под убунтой запускаю так:

Код: Выделить всё

vlc -I http
Итого имеем вебинтерфейс на 8080 порту на 2-х машинах.
По умолчанию модуль "Player Control" МЖД работает через RC. Поэтому чуть-чуть изменим исходники и добавим работу с VLC через вебинтерфейс.

Итак.
www/templates/terminals/terminals_edit.html
после сточки

Код: Выделить всё

   <option value="foobar"[#if PLAYER_TYPE=="foobar"#] selected[#endif#]>Foobar2000
Вставляем строчку с нашим новым типом плеера. То есть теперь будет выглядеть так:

Код: Выделить всё

   <option value="foobar"[#if PLAYER_TYPE=="foobar"#] selected[#endif#]>Foobar2000
   <option value="vlcweb"[#if PLAYER_TYPE=="vlcweb"#] selected[#endif#]>VLC over HTTP
www/modules/app_player/app_player.class.php
после строчек

Код: Выделить всё

   } elseif ($terminal['PLAYER_TYPE']=='foobar') {
    include(DIR_MODULES.'app_player/foobar.php');
Вставляем строчки с нашим вызовом нового плеера. То есть теперь будет выглядеть так:

Код: Выделить всё

   } elseif ($terminal['PLAYER_TYPE']=='foobar') {
    include(DIR_MODULES.'app_player/foobar.php');
   
   } elseif ($terminal['PLAYER_TYPE']=='vlcweb') {
    include(DIR_MODULES.'app_player/vlcweb.php');
создадим новую библиотеку работы с нашим плеером
www/modules/app_player/vlcweb.php

Код: Выделить всё

<?php
 /**
 * Title: VLC over HTTP
 *
 * Description
 *
 * @access public
 */

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

    $uid = rand(1, 9999999);

    if ($command=='refresh') {
      $out['PLAY']=preg_replace('/\\\\$/is', '', $out['PLAY']);
     // $path=str_replace('/', "\\", ($out['PLAY']));
      $path=$out['PLAY'];
      
      curl_setopt($ch, CURLOPT_URL, "http://".$terminal['HOST'].":".$terminal['PLAYER_PORT']."/requests/status.xml?command=in_play&input=".urlencode($path));
      $res=curl_exec($ch);
    }
      if ($command=='pause') {
       curl_setopt($ch, CURLOPT_URL, "http://".$terminal['HOST'].":".$terminal['PLAYER_PORT']."/requests/status.xml?command=pl_pause");
       $res=curl_exec($ch);
      }


      if ($command=='fullscreen') { 
       curl_setopt($ch, CURLOPT_URL, "http://".$terminal['HOST'].":".$terminal['PLAYER_PORT']."/requests/status.xml?command=fullscreen");
       $res=curl_exec($ch);
      }

      if ($command=='next') {
       curl_setopt($ch, CURLOPT_URL, "http://".$terminal['HOST'].":".$terminal['PLAYER_PORT']."/requests/status.xml?command=pl_next");
       $res=curl_exec($ch);
      }

      if ($command=='prev') {
       curl_setopt($ch, CURLOPT_URL, "http://".$terminal['HOST'].":".$terminal['PLAYER_PORT']."/requests/status.xml?command=pl_previous");
       $res=curl_exec($ch);
      }

      if ($command=='close') {
       curl_setopt($ch, CURLOPT_URL, "http://".$terminal['HOST'].":".$terminal['PLAYER_PORT']."/requests/status.xml?command=pl_stop");
       $res=curl_exec($ch);
      }

   $res=''; // ->NULL

   //print_r();
?>
Для изменения громкости звука из выпадающего списка необходимо создать метод Computer -> VolumeLevelChanged

Код: Выделить всё

if ($params['VALUE']){
  $this->setProperty('volumeLevel',$params['VALUE']);
}
$volume = $this->getProperty('volumeLevel');

safe_exec('amixer set Master '.$volume.'% unmute');
say("Изменилась громкость до ".$params['VALUE']." процентов");
Маленькое послесловие.
Итого. Алиса играет музыку стандартными средствами (кнопки управления, медиатека) на сервере (Убунта) и клиенте(Винда). Кроме того можно управлять воспроизведением видео.(У меня у дивана выключатель NooLite, на скриптовую кнопку которого навешено: паузу VLC плееру на винде, включить свет. Удобно запаузить кино, потом продолжить).

Просьба добавить в основную ветку.

Re: Player Control

Добавлено: Чт ноя 28, 2013 11:31 am
Amarok
msh555 писал(а):Обсуждение страницы Player Control
А страница - пуста :(

Re: Player Control

Добавлено: Чт ноя 28, 2013 4:28 pm
Galakart
Подскажите, где поправить кодировку чтобы имена файлов нормально в веб-интерфейсе отображались?
mjdm.JPG
mjdm.JPG (22.03 КБ) 19164 просмотра

Re: Player Control

Добавлено: Чт ноя 28, 2013 8:56 pm
ErmolenkoM
Та же проблема.

Re: Player Control

Добавлено: Пт ноя 29, 2013 11:36 am
sergejey
Я так понимаю, что система Linux? В файле ./modules/app_mediabrowser/app_mediabrowser.class.php в нескольких местах используются функции win2utf и utf2win -- можно попробовать их убрать, при этом название папок и файлов не будет преобразовываться. В Windows это нужно, может в Linux это мешает.

Re: Player Control

Добавлено: Пт ноя 29, 2013 3:31 pm
ErmolenkoM
Убрал win2utf и utf2win из app_mediabrowser.class.php. Теперь русские буквы нормально отображает. Правда запуск музыки все равно не пашет :-) разбираюсь.
И да, у меня Ubunta.

Re: Player Control

Добавлено: Пт ноя 29, 2013 5:38 pm
Galakart
Почему-то играет только песни, в пути и названии которых нет пробелов. Если запустить файл с пробелами, VLC выкидывает в лог ошибку:
filesystem access error: cannot open file /mnt/usbhdd_share/Music/Mymusic/Big+city+-+stick+em+up.mp3 (No such file or directory)
наверно ему не нравится что пробелы заменены на плюсы.
Если из веб-интерфейса поставить на проигрывание папку целиком (которая тоже без пробелов), то тогда все файлы в ней нормально играют

Re: Player Control

Добавлено: Ср дек 04, 2013 6:17 am
Amarok
msh555 писал(а):Под виндой в настройках поставлена галка WEB (и задан пароль, без него не работает)
А вот где пароль ставить - ненашел :roll:

Re: Player Control

Добавлено: Ср дек 04, 2013 7:31 am
ErmolenkoM
BlackWarrior писал(а):
msh555 писал(а):Под виндой в настройках поставлена галка WEB (и задан пароль, без него не работает)
А вот где пароль ставить - ненашел :roll:
наверное под Линухом смотришь? Там нету. А под виндой есть :-)