Содержание

TVIP JavaScript API #6

Версия API #6
Доступна на прошивках linux-qt от 5.0.x.

Медиацентры TVIP отображают Web-контент с использованием движка WebKit.

JavaScript API в медиацентрах TVIP базируется на следующих основных объектах:

  • window.TvipStb - содержит базовые методы для взаимодействия с аппаратной частью;
  • window.TvipPlayer - содержит методы для управления медиаплеером;
  • window.TvipRecorder - содержит методы для управления записью эфира;
  • window.TvipEvent - содержит callback-методы;

Объекты не требуют явного создания или какой-либо инициализации и доступны из любой Web-страницы, открытой в STB-браузере.

С кодами клавиш пульта вы можете ознакомиться тут.

Основные изменения:

  • Возможность смены языка системы (из основного ТВ-портала).
  • Установка начальных языков субтитров и аудио.
  • Возможность доступа к EPG из MPEG-TS потока.

Описание методов объектов JS API

TvipStb

bool addMountPoint(int id, bool temp, int type, String name, Object options);

Добавляет или заменяет точку монтирования с указанным id идентификатором. Если temp равно false, точка монтирования будет сохранена после перезагрузки устройства, если true - точка будет удалена при перезагрузке или перезапуске приложения. Возможные типы точек монтирования (type): 1 - SMB, 2 - NFS. Имя точки в системе монтирования (например, в сплывающих сообщениях): name. Параметр options задает специфические опции в виде объекта:

SMB:

{
  "address": <address>,
  "folder": <folder>,
  "username": <username>,
  "password": <password>
}

Здесь, <address> - IP-адрес, доменное или NetBIOS-имя сервера, <folder> - имя расшаренного ресурса на сервере, <username> и <password> - опциональные данные для авторизации на сервере.

NFS:

{
  "address": <address>,
  "folder": <folder>
}

Здесь, <address> - IP-адрес или доменное имя сервера, <folder> - полный путь к расшаренному каталогу на сервере.



void enableCas(String name, Object options)

Включить поддержку CAS/DRM для медиа потоков, запускаемых в данном портале. Типа CAS/DRM задается параметром name. Например, «tvip» «viewright_web», «viewright_iptv», «ares». Опции задаются как key-value в объекте options.

void enableSpatialNavigation(bool enable)

Включить или выключить навигацию по отдельным элементам (кнопкам, ссылкам) веб-страницы.

void execSystemUri(String uri)

Запустить Системный URI (кроме режима «Для всей системы»).



int getApiVersion();

Возвращает номер версии API.

String getSoftwareVersion();

Возвращает версию прошивки медиацентра.

String getCurrentLanguageCode();

Возвращает идентификатор текущего активного языка интерфейса ('en', 'ru').

String getCurrentTimezone();

Возвращает текущий часовой пояс (например, Europe/Moscow).

String getDeviceId();

Возвращает идентификатор модели устройства. Например, s410.

String getDisplayMode();

Возвращает текущий режим дисплея («1080i», «1080p», «720p», «576i», и т.д.).

List getDirectoryDirs(String directory);

Возвращает список имен каталогов в системном каталоге directory.

[ "Dir1", "Dir2", "Dir3" ]



List getDirectoryFiles(String directory);

Возвращает список объектов с данными о файлах (без каталогов) в системном каталоге directory.

[
  {
    "name": "file1",
    "size": 1234567
  },
  
  {
    "name" : "file2",
    "size" : 44444
  }
]

name - имя файла в каталоге, size - размер файла в байтах.



String getEnvValue(String name);

Получить переменную из постоянного хранилища браузера. Если name не найден, вернется пустая строка.



String getMainMacAddress();

Возвращает строку, содержащую основной MAC-адрес приставки. Обычно это MAC-адрес Ethernet.



Object getNetworkDefaultRouteConfig();

Возвращает объект, содержащий информацию о сетевом шлюзе по-умолчанию (default route). Пример объекта:

{
   "ipaddress": "192.168.1.1",
   "interface": "eth0",
   "metric": 1,
}

Поля объекта: ipaddress - IP-адрес шлюза, interface - имя интерфейса, metric - метрика.



List getNetworkInterfaces();

Возвращает список имен сетевых интерфейсов. Пример:

["eth0","ip6tnl0","sit0", "wlan0"]



Object getNetworkInterfaceStatus(String name);

Возвращает объект, содержащий информацию о статусе сетевого интерфейса с именем name. Имя можно получить из метода getNetworkInterfaces. Пример объекта:

{
  "dns1":"8.8.8.8",
  "dns2":"",
  "fullduplex":true,
  "gateway":"192.168.1.1",
  "ipaddress":"192.168.1.100",
  "mac":"10:27:BE:04:04:04",
  "mask":"255.255.255.0",
  "running":true,
  "speed":100
}

Поля объекта: mac - MAC-адрес интерфейса (может совпадать или не совпадать с основным MAC); running - true, если интерфейс подключен, иначе false; fullduplex - true, если соединение полнодуплексное, иначе false; speed - скорость подключения в Мбит/c; ipaddress - IP адрес на интерфейсе (пусто, если нет); mask - маска подсети; gateway - шлюз; dns1 и dns2 - адреса DNS-серверов.



Object getNetworkStatistics(String name);

Возвращает объект, содержащий информацию о статистике сетевого интерфейса с именем name. Имя можно получить из метода getNetworkInterfaces. Пример объекта:

{
  "b_packets_received":0,
  "b_packets_sent":0,
  "bytes_received":988250211,
  "bytes_sent":80635584,
  "d_packets_received":32,
  "d_packets_sent":0,
  "m_packets_received":27303,
  "m_packets_sent":0,
  "packets_received":974195,
  "packets_sent":508277,
  "u_packets_received":0,
  "u_packets_sent":0
}

Поля объекта: bytes_received и bytes_sent - сколько всего получено и отправлено байт через интерфейс; packets_received и packets_sent - сколько всего получено и отправлено пакетов через интерфейс; u_packets_received и u_packets_sent - сколько получено и отправлено юникаст пакетов через интерфейс; b_packets_received и b_packets_sent - сколько получено и отправлено бродкаст пакетов через интерфейс; m_packets_received и m_packets_sent - сколько получено и отправлено мультикаст пакетов через интерфейс;

List getSmbWorkgroups();

Производит поиск рабочих групп в сети и возвращает их список. Например:

['WORKGOUP', 'MYGROUP']



List getSmbServers(String group);

Производит поиск серверов в указанной параметром group рабочей группе и возвращает список NetBIOS имен серверов. Например:

['MYPC', 'USER2']



List getSmbServerShares(String server);

Производит поиск доступных сетевых ресурсов на сервере по NetBIOS-адресу или IP-адресу, указанному параметром server и возвращает список имен ресурсов. Например:

['shared folder', 'Загрузки']



bool getStandBy();

Возвращает true, если устройство было переведено в режим сна командой setStandBy. Иначе возвращает false. Только для режима «Для всей системы».



List getStorageValues();

Возвращает список объектов смонтированных накопителей (локальных и сетевых).

[
 {
   "label": <label>,
   "path" : <ospath>,
   "fstype" : <file_system>,
   "writable": <writable>,
   "status": <status>,
   "size": <size>,
   "free" <free>
 },

]

Поля объекта: label - имя (метка) смонтированного ресурса для отображения пользователю; path - каталог, в который смонтирован ресурс; fstype - тип файловой системы (варианты: vfat, ntfs, ext2, ext3, nfs, cifs; writable - разрешена ли запись в файловую систему («1» - да, «0» - нет); status - статус точки монтирования («0» - требуется монтирование, «1» - в процессе монтирования, «2» - смонтировано успешно, «3» - ошибка монтирования, «4» - в процессе размонтирования, «5» - размонтировано, «6» - ошибка размонтирования), size - размер файловой системы, free - доступное место.



String getUdpProxyAddress();

Возвращает адрес UDP proxy сервера, указанный в настройках.



String getSecurityCode();

Возвращает код родительского контроля, установленный в настройках. Если режим Безопасности выключен, то всегда возвращается пустое значение.



bool hasDirectory(String osPath);

Возвращает true, если в системной файловой системе существует каталог с именем osPath, иначе false.



bool hasFile(String osPath);

Возвращает true, если в системной файловой системе существует файл (не каталог) с именем osPath, иначе false.



void removeFile(String path);

Удаляет файл по пути path в пределах разрешенных директорий.



launchBrowser(String url, String backUrl);

Запустить Веб-браузер и открыть страницу по адресу url. Перейти по адресу backUrl в случае выхода из браузера обратно в портал.



launchHomeScreen();

Вызвать домашний экран Tvip (кроме режима «Для всей системы»).



void launchPreferences();

Запустить системные настройки Tvip.



void launchSystemInfo();

Вызвать экран информации о системе (тоже что кнопка S.Info).



void logDebug(String message);

Выводит отладочное сообщение в системную консоль (Linux) или logcat (Android).



void rebootSystem();

Полностью перезагрузить систему.



void removeMountPoint(int id);

Удалить точку монтирования из менеджера точек монтирования. id - уникальный идентификатор точки монтирования.



void setColorKey(int color);

Установка цвета UI, который будет считаться прозрачным. color - цвет в формате RGB.



void setCurrentLanguageCode(String language);

Устанавливает основной язык системы (в language).



void setCustomHeader(String header, String value);

Устанавливает HTTP-заголовок для будущих HTTP-запросов браузера. header - имя заголовка, value - значение заголовка. Если value пустая строка, то удаляется ранее установленный заголовок.



void setEnvValue(String name, String value);

Сохранить переменную в постоянном хранилище браузера. Все переменные доступны всем страницам браузера.



void setDirectoryListFilters(String filters);

Задать фильтры имен файлов для getDirectoryFiles и getDirectoryDirs. Фильтры разделяются символом |. Можно использовать символы ? и *. Например: *.avi|*.mp3



setHomeKeyUrl(String url);

В режиме «Для всей системы» задает переход на определенный Url при нажатии кнопки Home.

setOverrideErrorUrl(String url);

Задает URL, на который будет осуществлен переход, если не удается загрузить страницу, запрошенную порталом.

void setPassKeyKeyboard(bool enabled);

Если enabled=true, событие нажатия кнопки «Включение клавиатуры» на пульте (Cursor key) будет передаваться в JavaScript, вместо стандартного обработчика отображения виртуальной клавиатуры.



void setPassKeyMenu(bool enabled);

Если enabled=true, событие нажатия кнопки «Menu» на пульте будет передаваться в JavaScript, вместо вызова стандартного меню Tvip.



void setPassKeySysInfo(bool enabled);

Если enabled=true, событие нажатия кнопки «S.INFO» на пульте будет передаваться в JavaScript, вместо вызова стандартной системной информации Tvip.



void setPassKeySettings(bool enabled);

Если enabled=true, событие нажатия кнопки «Настройки» на пульте будет передаваться в JavaScript, вместо вызова стандартных настроек Tvip.



void setStandBy(bool enabled);

Переводит приставку в режим сна (enabled=true) или возвращает из режима сна (enabled=false). Только для режима «Для всей системы».



void setWebProxy(String proxy, Array exclude)

Устанавливает адрес Web-прокси сервера для использования с данным порталом. Все последующие запросы портала будут идти через прокси. Параметры: proxy - адрес прокси сервера, exclude - массив с серверами, которые не должны идти через прокси (либо IP-подсеть, либо домен).



void showVirtualKeyboard(bool show);

Отобразить (show=true) или скрыть (show=false) виртуальную клавиатуру.



void syncFileSystem();

Явно синхронизировать файловую систему (например, после изменения настроек).



void reset();

Сбросить настройки: прозрачного цвета; HTTP-заголовков; фильтра файлов.

TvipPlayer

void reset();

Сбросить воспроизведение. При переходе между страницами, если не требуется продолжение проигрывания, нужно вызывать этот метод.



void playUrl (String url, String mode);

void playUrl (String url, Object options);

Начать проигрывание видео по заданному URL или непосредственному пути в файловой системе.

Параметр mode может принимать значения:

vod - данный URL содержит VOD-файл (с конечной длиной);

live - данный URL содержит live ТВ-поток (можно использовать DVR и MPEGTS шифрование), либо адаптивный HLS;

live_ts - тоже, что live, но при постановке на паузу включается локальный Timeshift.

Примеры:

playUrl ("udp://239.1.1.1", "live"); // начать проигрывание multicast-потока;
playUrl ("http://domain.tv/movies/movie.mkv", ""); // начать проигрывание видео-файла по http;
playUrl ("http://domain.tv/hls/playlist.m3u8", "live"); // начать проигрывание HLS-видео;


Параметр options позволяет задавать дополнительные опции воспроизведения:

playUrl("udp://239.1.1.1",
{
  "mode" : "live",
  "audio_index" : 1,
  "subtitle_index": 3
}
);

Возможные опции:
mode - тоже, что предыдущем варианте.
position - начальная позиция воспроизведения в миллисекундах.
audio_index - индекс аудио дорожки.
audio_pid - PID аудио дорожки (в случае MPEGTS).
audio_language - язык аудио дорожки ( 2 или 3 символа).
subtitle_index - индекс дорожки субтитров.
subtitle_pid - PID дорожки субтитров (в случае MPEGTS).
subtitle_language - язык субтитров ( 2 или 3 символа).
parse_epg - включить парсинг таблиц EIT MPEGTS.



void setVideoWindow(int x, int y, int w, int h, boolean onTop);

Устанавливает размер окна видео. Координаты устанавливаются относительно текущего режима видео выхода.

Если w = 0 и h = 0, используется полноэкранный режим.

Если onTop = true, видео окно рисуется поверх UI.



void stop();

Остановить воспроизведение, если оно было запущено.



void pause();

Поставить воспроизведение на паузу.



void unpause();

Продолжить воспроизведение, если оно было поставлено на паузу.



void seek(int position);

Установить позицию воспроизведения на position в миллисекундах. Необходимо учитывать, что начало воспроизведения - это minPosition - см. ниже.



void attachExternalSubtitle(String url, String encoding)

Добавить к текущему проигрываемому файлу субтитры из внешнего файла по адресу url. Команда вызывается после playUrl. Опциональный параметр encoding устанавливает кодировку текста файла субтитров.



String getCurrentUrl();

Возвращает URL текущего или последнего проигранного потока.

String getCurrentUrlMode();

Возвращает режим (второй параметр playUrl) текущего или последнего проигранного потока.

int getCurrentPositionMsec();

Возвращает текущую позицию воспроизведения.



int getMinPositionMsec();

Возвращает минимальную позицию воспроизведения (т.е. начало контента).



int getMaxPositionMsec();

Возвращает максимальную позицию воспроизведения (т.е. конца контента).



void setMpegTsBufferMsec(int msec);

Устанавливает размер буфера MPEG-TS для следующего воспроизведения в msec мсек.



void setVolume();

Устанавливает громкость звука в интервале от 0 до 100. Только для режима «Для всей системы».



int getVolume();

Возвращает текущую громкость звука в интервале от 0 до 100. Только для режима «Для всей системы».



void setMute(bool mute);

Отключает (mute=true) или включает (mute=false) звук. Только для режима «Для всей системы».



bool getMute();

Возвращает true, если звук выключен, иначе false. Только для режима «Для всей системы».



String getContainerType();

Возвращает тип контейнера последнего проигрываемого контента (например, mpegts, avi, matroska).



int getStreamsCount();

Возвращает количество медиапотоков в последнем проигрываемом контенте (аудио, видео, субтитров, итд).



Object getStreamInfo(int index);

Возвращает объект с информацией о медиапотоке с номером index.

{
  "type": <videotype>,
  "id": <id>,
  "codec": <codec>,
  "lang" : <lang>
}

Здесь: videotype - тип медиапотока:«v» - видео, «a» - аудио, «s» - субтитры; id - внутренний идентификатор (PID); codec - название кодека потока; lang - для аудиопотоков 3 буквенный код языка.



int getCurrentVideoStreamIndex();

Возвращает номер потока с видео-дорожкой, проигрываемой в данный момент.



int getCurrentAudioStreamIndex();

Возвращает номер потока с аудио дорожкой, проигрываемой в данный момент.



int getCurrentSubtitleStreamIndex();

Возвращает номер потока с дорожкой субтитров, проигрываемой в данный момент.



void setCurrentAudioStreamIndex(int index);

Устанавливает номер активной аудио дорожки (index).



void setCurrentSubtitleStreamIndex(int index);

Устанавливает номер активной дорожки субтитров (index).



void setAspectRatio (String ratio)

Устанавливает режим aspect ratio. На данный момент поддерживаются значения: «box» - Оригинал, «full» - На весь экран, «zoom» - Увеличенный.



TvipRecorder

String addRecord(String name, String url, String path, String start, String end);

Добавляет новое задание на запись эфира.
Здесь: name - произвольное имя записи, url - URL потока (поддерживаются потоки в формате MPEGTS через UDP, RTP и HTTP, path - локальный путь для записи, start и end - время начала и окончания записи в UNIX TIMESTAMP либо в формате «YYYYMMDDTHHmmss».
Возвращает уникальный идентификатор созданного задания.



bool cancelRecord(String id, bool removeFile);

Удаляет задание на запись с уникальным идентификатором id. Если removeFile=true, удаляется также записанный на диск поток. Возвращает true в случае успешного удаления.



void updateStartEndTime(String id, String start, String end);

Меняет время начала и/или окончания записи с уникальным идентификатором id. Если требуется поменять только одно из значений, то второе - пустая строка. Формат start и end см. в описании addRecord.



List getRecordIds();

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



Object getRecord(id);

Возвращает объект с параметрами записи с уникальным идентификатором id.

{
  "id": <id>,
  "name": <name>,
  "startTime": <start>,
  "endTime" : <end>,
  "url" : <url>,
  "status" : <status>
}

Здесь: <id>, <name>, <start>, <end> - соответствуют параметром метода addRecord; <status> - статус записи: «waiting» - ожидает запись, «recording» - запись в процессе, «finished» - запись завершена, «error» - произошла ошибка.



TvipEvent

TvipEvent содержит Callback функции, которые можно переназначить для получения событий.

onPlayerStateChange(int oldState, int newState);

Вызывается при изменении статуса воспроизведения медиаплеера. oldState - предыдущий статус плеера, newState - новый статус плеера.

Возможные значения статусов плеера:

  • 1 - начало подключения к новому URL;
  • 2 - получение метаданных;
  • 3 - метаданные получены;
  • 4 - подготовка декодеров;
  • 5 - воспроизведение;
  • 6 - достигнут конец контента;
  • 7 - остановка воспроизведения;
  • 8 - воспроизведение остановлено;
  • 9 - воспроизведение поставлено на паузу;
  • 10 - происходит seek на новую позицию;
  • 11 - произошла ошибка;

onSystemEvent(String codename, Object args);

Вызывается при возникновении системных событий.
Варианты codename:

  • «mounted» - подключено внешнее устройство хранения данных (args[«label»] - метка устройства).
  • «unmounted» - отключено внешнее устройство хранения данных (args[«label»] - метка устройства).
  • «onpause» - окно веб-приложения переведено в фоновый режим (например, открыт экран Home или Настройки).
  • «onresume» - окно веб-приложения снова активно (вызывается при возврате в приложение).
  • «cec_sleep» - подключенный по HDMI телевизор был выключен.
  • «cec_wake» - подключенный по HDMI телевизор был включен.
  • «epg» - Получен новый элемент EPG из MPEG-TS.

Перевод этой страницы: