Skip navigation

Ministra TV platform позволяет без особого труда интегрировать в себя сервисы, адаптированные для работы на STB.

Интеграция заключается в создании отдельного модуля, добавления иконок для главного меню и добавления имени созданного модуля в список инициализируемых при старте. При этом сам сервис может находиться или в составе middleware, или на удаленном http сервере.

Требования для адаптируемых сервисов

  1. Поддержка минимум трех разрешений: 720х480 (NTSC), 720х576 (PAL), 1280х720 (720p)
  2. Корректная обработка выхода из сервиса (использование GET параметра referrer для возврата)
  3. Оптимизация интерфейса под управление пультом ДУ

Обработка выхода из сервиса

Одним из требований является возможность покинуть сервис и вернуться обратно в Ministra. URL для возврата находится в GET параметре referrer в urlencoded виде, т.е. его необходимо предварительно декодировать.

Получение GET параметров в JavaScript:

var $_GET = {};
 
function decode(s) {
    return decodeURIComponent(s.split("+").join(" "));
}
 
 
document.location.search.replace(/\??(?:([^=]+)=([^&]*)&?)/g, function () {
    $_GET[decode(arguments[1])] = decode(arguments[2]);
});

Код для возврата в Ministra:

window.location = decodeURIComponent($_GET['referrer']);

Пример интеграции

Рассмотрим пример интеграции абстрактного сервиса example.tv. Допустим сам сервис доступен по url http://tv.example.com/index.html

Создание модуля

Создаем файл exampletv.js в папке /c/ с содержанием:

(function(){
 
    // Первый аргумент - подпись под иконкой в главном меню
    // Третий аргумент - имя файла иконки
    main_menu.add('EXAMPLE.TV', [], 'mm_ico_exampletv.png', function(){
 
        var params = '';
 
        if (stb.user['web_proxy_host']){
            params = '?proxy=http://'+stb.user['web_proxy_host']+':' +stb.user['web_proxy_port'];
        }
 
        stb.setFrontPanel('.');
 
        if (!params){
            params += '?';
        }else{
            params += '&';
        }
 
        params += 'referrer='+encodeURIComponent(window.location);
 
        //window.location = '/' + stb.portal_path + '/external/olltv/index.html'+params;
        window.location = 'http://tv.example.com/index.html'+params;
 
    }, {layer_name : "exampletv"}); // Для корректной работы модуля необходимо указать уникальный layer_name
 
    loader.next();
})();

Добавление иконок в главное меню

Необходимо создать три файла иконок с именем mm_ico_exampletv.png, соответствующие трем используемым разрешениям.

Размеры иконок:

  • 200x100px - NTSC
  • 200x120px - PAL
  • 360x160px - 720p

И поместить каждый файл в папку соответствующую разрешению:

  • NTSC - каталог /c/template/<theme_name>/i_480/
  • PAL - каталог /c/template/<theme_name>/i/
  • 720p - каталог /c/template/<theme_name>/i_720/

Для совместимости с механизмом загрузки модуля создаем еще три пустых css файла в /c/.

  • exampletv.css
  • exampletv_480.css
  • exampletv_720.css

Добавление модуля в список инициализируемых

В конфиг файле (custom.ini) в параметр all_modules добавляем имя нашего модуля на то место, где бы мы хотели его видеть, например, сразу после видеоклуба

all_modules[] = vclub
all_modules[] = exampletv ;наш модуль
all_modules[] = ex

После выполнение всех пунктов при следующей загрузке Ministra на приставке в главном меню должна появиться иконка добавленного сервиса.

Need Help

Синди – эксперт по работе с Ministra TV platform и автор этой статьи.

Была ли полезна эта статья?

Да Нет

Сожалеем.
Как можно улучшить эту статью?

Мы используем cookie-файлы, чтобы оптимизировать работу сайта и предоставить вам лучший интерфейс; а также для продвижения нашей продукции. Ознакомьтесь с нашей политикой Cookie, чтобы узнать, как именно мы используем cookie-файлы, и как вы можете это контролировать.
Если вы продолжите пользоваться сайтом или закроете это сообщение — это значит, что вы согласны с нашей Политикой конфиденциальности и разрешаете использование cookie-файлов, как описано в политике Cookie.