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

[Железо] Интерфейс плеера Dune для терминалов MajorDoMo

Добавлено: Пн сен 03, 2012 1:50 pm
Vip
У меня дома установлен медиаплеер Dune HDI Duo и естественно мне захотелось управлять им из интерфейса MajorDoMo.
ШАГ 1:
C:\_majordomo\htdocs\templates\terminals\terminals_edit.html
после 82 строчки

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

  <option value="foobar"[#if PLAYER_TYPE=="foobar"#] selected[#endif#]>Foobar2000
добавляем новую

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

<option value="dune"[#if PLAYER_TYPE=="dune"#] selected[#endif#]>Dune
ШАГ 2:
C:\_majordomo\htdocs\modules\app_player\app_player.class.php
после 260 строки

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

    include(DIR_MODULES.'app_player/foobar.php');
добавляем две новые

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

   } elseif ($terminal['PLAYER_TYPE']=='dune') {
    include(DIR_MODULES.'app_player/dune.php');
ШАГ3:
в папке C:\_majordomo\htdocs\modules\app_player\
создаём файл dune.php следующего содержания:

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

<?
 /**
 * Title
 *
 * 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']));
      curl_setopt($ch, CURLOPT_URL, "http://".$terminal['HOST'].":".$terminal['PLAYER_PORT']."/cgi-bin/do?cmd=start_file_playback&media_url=smb://".urlencode($path));
    }

      if ($command=='pause') {
       curl_setopt($ch, CURLOPT_URL, "http://".$terminal['HOST'].":".$terminal['PLAYER_PORT']."/cgi-bin/do?cmd=ir_code&ir_code=E11EBF00");
       $res=curl_exec($ch);
      }

      if ($command=='fullscreen') {

      }

      if ($command=='next') {
       curl_setopt($ch, CURLOPT_URL, "http://".$terminal['HOST'].":".$terminal['PLAYER_PORT']."/cgi-bin/do?cmd=ir_code&ir_code=E21DBF00");
       $res=curl_exec($ch);
      }

      if ($command=='prev') {
      curl_setopt($ch, CURLOPT_URL, "http://".$terminal['HOST'].":".$terminal['PLAYER_PORT']."/cgi-bin/do?cmd=ir_code&ir_code=B649BF00");
       $res=curl_exec($ch);
      }

      if ($command=='close') {
      curl_setopt($ch, CURLOPT_URL, "http://".$terminal['HOST'].":".$terminal['PLAYER_PORT']."/cgi-bin/do?cmd=ir_code&ir_code=E619BF00");
       $res=curl_exec($ch);
      }
   //print_r();
?>

Re: Интерфейс плеера Dune для терминалов MajorDoMo

Добавлено: Пн сен 03, 2012 6:26 pm
sergejey
Класс!
А что за плэер? как он сам по себе?

Re: Интерфейс плеера Dune для терминалов MajorDoMo

Добавлено: Пн сен 03, 2012 6:33 pm
Vip
Да медиаплеер на два винчестера, а при помощи стороннего софта подняли ssh и торентокачалку, есть встроенный браузер хоть и туповатый...В общем классная штуковина, прародитель распберри я бы сказал)))
тут описание http://dune-hd.com/
а тут возможности http://forum.hdtv.ru/index.php?showforum=40

Re: [Железо] Интерфейс плеера Dune для терминалов MajorDoMo

Добавлено: Пт апр 19, 2019 4:37 am
Unripe
Спасибо Давно искал решение
С дюнами еще с первой версии.
Сейчас дома аж 3 штуки и 4 на даче, все запитанно на synology.

Re: [Железо] Интерфейс плеера Dune для терминалов MajorDoMo

Добавлено: Пн мар 09, 2020 12:08 am
kostyaer
Подниму тему.
Имеется Dune TV-102
Что хочу:
1. Получать инфу какой канал и передача воспроизводится. (выводить это в виджет через JSON) возможность заявлена, тем более есть пульты на андроид с таким функционалом.
2. Выводить на экран произвольный текст OSD как в Коди уведомления.
3. Полное управление. (С этим почти разобрался)

Может кому будет интересно
В описании взаимодействия ip control всё расписано, Тут полная документация

Только почему то вместо JSON ответка приходит XML
ответ на статусПоказать
<command_result>
<param name="protocol_version" value="4"/>
<param name="player_state" value="file_playback"/>
<param name="playback_state" value="playing"/>
<param name="previous_playback_state" value="buffering"/>
<param name="last_playback_event" value="no_event"/>
<param name="playback_url" value="http://ott.shara.me:80/video.m3u8"/>
<param name="playback_speed" value="256"/>
<param name="playback_duration" value="0"/>
<param name="playback_position" value="0"/>
<param name="playback_current_bitrate" value="3087263"/>
<param name="playback_is_buffering" value="0"/>
<param name="playback_volume" value="43"/>
<param name="playback_mute" value="0"/>
<param name="playback_video_width" value="1920"/>
<param name="playback_video_height" value="1080"/>
<param name="audio_track" value="0"/>
<param name="audio_track_pid" value="221"/>
<param name="subtitles_track" value="-1"/>
<param name="playback_window_fullscreen" value="1"/>
<param name="playback_window_rect_x" value="-1"/>
<param name="playback_window_rect_y" value="-1"/>
<param name="playback_window_rect_width" value="-1"/>
<param name="playback_window_rect_height" value="-1"/>
<param name="playback_clip_rect_x" value="-1"/>
<param name="playback_clip_rect_y" value="-1"/>
<param name="playback_clip_rect_width" value="-1"/>
<param name="playback_clip_rect_height" value="-1"/>
<param name="playback_video_source_rect_x" value="-1"/>
<param name="playback_video_source_rect_y" value="-1"/>
<param name="playback_video_source_rect_width" value="-1"/>
<param name="playback_video_source_rect_height" value="-1"/>
<param name="osd_width" value="1920"/>
<param name="osd_height" value="1080"/>
<param name="video_enabled" value="1"/>
<param name="video_on_top" value="0"/>
<param name="video_zoom" value="full_enlarge"/>
<param name="pause_is_available" value="1"/>
<param name="teletext_available" value="0"/>
<param name="teletext_enabled" value="0"/>
<param name="teletext_mix_mode" value="0"/>
<param name="teletext_page_number" value="-1"/>
<param name="scrambling_detected" value="0"/>
<param name="hangup_watchdog_activations" value="0"/>
<param name="hls_first_sequence" value="21578"/>
<param name="segment_length" value="6"/>
<param name="audio_track.0.lang" value="rus"/>
<param name="audio_track.0.pid" value="221"/>
<param name="audio_track.0.codec" value="AAC"/>
<param name="audio_track.0.type" value="normal"/>
<param name="audio_track.1.lang" value="rus"/>
<param name="audio_track.1.pid" value="222"/>
<param name="audio_track.1.codec" value="AAC"/>
<param name="audio_track.1.type" value="normal"/>
<param name="pltv_enabled" value="0"/>
<param name="playback_pip_video_enabled" value="1"/>
<param name="pip_alpha_level" value="255"/>
<param name="pip_zorder" value="400"/>
<param name="video_zorder" value="200"/>
<param name="osd_zorder" value="500"/>
</command_result>
Есть подозрение, что с последней прошивкой урезали JSON, т.к. раньше пульт для Дюны на андроид корректно с ней работал- получал и ярлычки каналов, и программку.. а сейчас приложение говорит надо обновиться на последнюю прошивку, хотя на дюне последняя и стоит.. попробую откатиться на предыдущие...

Re: [Железо] Интерфейс плеера Dune для терминалов MajorDoMo

Добавлено: Пн мар 09, 2020 12:23 am
fandaymon
kostyaer писал(а):
Пн мар 09, 2020 12:08 am
Подниму тему.
Имеется Dune TV-102
Что хочу:
1. Получать инфу какой канал и передача воспроизводится. (выводить это в виджет через JSON) возможность заявлена, тем более есть пульты на андроид с таким функционалом.
У меня 303D, но вроде команды у них одни и те же. Информацию о том что там проигрывается получаю при помощи скрипта

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

$data_file = 'http://' . gg('Dune_303D.Dune_IP') . '/cgi-bin/do?cmd=status';
$xml = simplexml_load_file($data_file);

if ( ($xml->xpath('param/@name')[5]=='playback_url') and ($xml->xpath('param/@value')[5]<>gg('Dune_303D.Played')) and (substr($xml->xpath('param/@value')[5],0,4)<>'http')) {
 sg('Dune_303D.Played', $xml->xpath('param/@value')[5]);
}

В Dune_303D.Dune_IP хранится IP адрес
В Dune_303D.Played заношу что проигрывается в данный момент

С каналами и передачами не работает, так как смотрю Sunduk через родную аппликацию для Дюны - при просмотре передачи в статусе выдаётся http:// ссылка на канал

Json используется для дюн на андроиде, у наших последняя прошивка поддерживает протокол 4...

Re: [Железо] Интерфейс плеера Dune для терминалов MajorDoMo

Добавлено: Пн мар 09, 2020 5:15 am
kostyaer
Спасибо за информацию! Попробую!

Я правильно понимаю, что вся внутренняя работа dune организована на php? (сам я не программер, начал осваивать как раз с мажором)
Мысль крутится--А, что если расковырять плагин (юзаю shara.club) и часть кода задействовать в мажоре, дюна сможет откликается на него из вне...? Kак то же в ней организовано OSD и EPG.

Re: [Железо] Интерфейс плеера Dune для терминалов MajorDoMo

Добавлено: Пн мар 09, 2020 9:47 am
fandaymon
kostyaer писал(а):
Пн мар 09, 2020 5:15 am
Спасибо за информацию! Попробую!

Я правильно понимаю, что вся внутренняя работа dune организована на php? (сам я не программер, начал осваивать как раз с мажором)
Мысль крутится--А, что если расковырять плагин (юзаю shara.club) и часть кода задействовать в мажоре, дюна сможет откликается на него из вне...? Kак то же в ней организовано OSD и EPG.
Плагины - да, те что я видел, написаны на PHP. Смотреть код не пробовал

Re: [Железо] Интерфейс плеера Dune для терминалов MajorDoMo

Добавлено: Пн мар 09, 2020 1:14 pm
kostyaer
Посмотрел в плагине:
Видимо show_title_dialog вызывает диалоговое окно с кнопкой ОК

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

return ActionFactory::show_title_dialog(
                    'Канал удалён из Избранного',
                    $this->get_sel_item_update_action(
                        $user_input, $plugin_cookies));
Из документации всё работает:
Открыть страничку в браузере дюны:

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

http://192.168.1.75/cgi-bin/do?cmd=launch_media_url&media_url=www://http://google.com
Запустить плагин:

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

http://192.168.1.75/cgi-bin/do?cmd=launch_media_url&media_url=plugin_launcher://{name=sharatv}
По аналогии попробовал, но не работает

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

http://192.168.1.75/cgi-bin/do?cmd=show_title_dialog&title_dialog=тест
Ладно, буду дальше смотреть, может и получится что то..

Re: [Железо] Интерфейс плеера Dune для терминалов MajorDoMo

Добавлено: Вт мар 10, 2020 12:51 pm
kostyaer
fandaymon писал(а):
Пн мар 09, 2020 12:23 am
kostyaer писал(а):
Пн мар 09, 2020 12:08 am
Подниму тему.
Имеется Dune TV-102
Что хочу:
1. Получать инфу какой канал и передача воспроизводится. (выводить это в виджет через JSON) возможность заявлена, тем более есть пульты на андроид с таким функционалом.
У меня 303D, но вроде команды у них одни и те же. Информацию о том что там проигрывается получаю при помощи скрипта

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

$data_file = 'http://' . gg('Dune_303D.Dune_IP') . '/cgi-bin/do?cmd=status';
$xml = simplexml_load_file($data_file);

if ( ($xml->xpath('param/@name')[5]=='playback_url') and ($xml->xpath('param/@value')[5]<>gg('Dune_303D.Played')) and (substr($xml->xpath('param/@value')[5],0,4)<>'http')) {
 sg('Dune_303D.Played', $xml->xpath('param/@value')[5]);
}

В Dune_303D.Dune_IP хранится IP адрес
В Dune_303D.Played заношу что проигрывается в данный момент

С каналами и передачами не работает, так как смотрю Sunduk через родную аппликацию для Дюны - при просмотре передачи в статусе выдаётся http:// ссылка на канал

Json используется для дюн на андроиде, у наших последняя прошивка поддерживает протокол 4...
В общем реализовал на основе вашего примера выборку из XMLки - статус, громкость, разрешение видео, битрейт, аудиокодек и название канала из адреса потока... Но не очень интересная инфа, даже не применить особо, в телегу добавил в статусном сообщении от дома состояние дюны. Лучше верну комп с Kodi под телек, попробую там JSON освоить.
Но спасибо, получил опыт в выборке данных =)

У меня несколько дюн, одна полноценная и несколько провайдерских валяется, на днях разлочил, но естественно без лицензии получил банер на экран -"Dune HD DEMO". Было хотел как то приспособить для вывода инфы на маленький монитор, но видимо ничего интересного из них не получится =(
PS
Что интересно в плагине ottplayer.es банер "Dune HD DEMO" не отображается, можно спокойно смотреть IPTV