Project

General

Profile

API

JSAPI для IPTV

Обзор

На приставке реализована система команд и функций, доступных через интерфейс вызова javascript. То есть, управление видеоконтентом с приставки, а так же самой приставкой(ее состояниями) осуществляется посредством веб-сайта.

Также возможен запуск этих функций через консоль. Для этого необходимо подключиться к приставке клиентом ssh, далее выполнить:
telnet 127.0.0.1 1301
и ввести необходимые JS команды

Обработка событий

События, такие как конец RTSP-потока или изменение таблицы PMT можно обрабатывать с помощью определения функции WRT.onEvent (подробнее).


Команды JSAPI

Ниже описаны методы объекта WRT. Запуск из среды JS: WRT.<функция>(параметр1, …)

Конфигурация

string GetSystemManufacturer() — извлекает строку производителя.
string GetSystemModel() — извлекает модель.
string GetSoftwareVersion() — извлекает версию прошивки.
string GetHardwareVersion() — извлекает версию аппаратной части.
string GetSoftwareDate() - извлекает дату создания прошивки.

string GetMacAddress() — получение MAC адреса приставки.
string GetIPAddress() — адрес полученный по dhcp.
string GetSerialNumber() - получение серийного номера.
QStringList GetAllIPAddresses() - получение IP адресов всех интерфейсов.

string GetDate() - получение текущей даты в формате dd/MM/yyyy.
string GetRTCTime() - получение текущей даты и врмени времени в формате dd/MM/yyyy hh:mm:ss.

string getEnv(string name) - считывание системных переменных.
string getEnv(string name, string defval) - считывание системных переменных со значением по умолчанию.
void setEnv(string name, string value) - запись значения системной переменной.

bool isMagAPI() - проверка, какой используется API.
  • 0 - используется API WRT.
  • 1 - используется API MAG.
void usedMagAPI(bool used) - задание API Для использования
  • 0 - использовать API WRT.
  • 1 - использовать API MAG.

string GetMimeType(QString path) - получить MIME-тип файла.
string GetAlbumCover(QString file) - получить расположение обложки альбома (только для аудио файлов).
int GetTemperature() - возвращает температуру, TODO: в разработке.


Включение/выключение

int SetPowerState(unsigned int power_state) — установка состояния приставки.
unsigned int GetPowerState() — получение текущего состояния.
  • 0 - включено.
  • 2 - режим ожидания.

Воспроизведение

int Play(string src = string(), double position = -1, bool loop = false) — запуск/продолжение потока. Например:

WRT.Play("udp://239.98.1.100:1234")
WRT.Play("rtsp://192.168.0.100:554/test_film")

WRT.PlayEx(str, params) - запук потока с расширенными возможностями, все параметры опциональны.

WRT.PlayEx("/ram/mnt/smb/Видео/ng.ts", {alang:"eng",apid:802,position:10,loop:false})
  • alang - задание языка аудио дорожки.
  • apid - задание pid аудио дорожки. Packet identification code (PID), от MPEG MEDIA стандарта - PES (packet elementary stream).
  • position - задание позиции в секундах.
  • loop - зацикливание потока.

int Stop() — остановка потока с заморозкой последнего кадра.
int Pause() — приостановка воспроизведения потока в случае rtsp и отказ от потока в случае igmp.
int Continue() — то же, что и Play().
int SetPosition(double position) — установка позиции с которой будет идти воспроизведение потока. Используется для rtsp
int SetPos(double position) — вызывает SetPosition(double position).
double GetPosition - определение текущей позиции в воспроизводимом потоке. Используется для rtsp.
double GetPos() — вызывает GetPosition().
string SetSpeed(double speed) — установка скорости воспроизведения потока. Используется для rtsp.
double GetSpeed() — определение скорости воспроизведения потока.

  • 1 - это нормальная скорость,
  • 2 - удвоенная,
  • 0,5 - вдвое замедленная.
  • Возможны отрицательные значения.

double GetCurrentSpeed() - вызывает GetSpeed().
double GetDuration() - определение длительности воспроизводимого файла. Возвращает -1 при воспроизведении потока.
int GetAudioPID() — получение текущего аудио PIDа.
int SetAudioPID(int id) — установка аудио PIDа.
int getPlayInfo() — получение текущего аудио PIDа.

{"ccErrors":0,"duration":-1,"isPlaying":true,"pmt":{"6501":{"av_type":2,"ccErrors":0,"codec":1,"codecName":"MP1V","pid":6501},"6502":{"av_type":1,"ccErrors":0,"codec":4,"codecName":"MP1A","language":"","pid":6502,"title":""},"audio_pid":6502,"video_pid":6501},"position":3602.984,"src":"udp://239.98.1.136:1234","startDateTime":"2018-05-03T07:52:24.336Z","startPosition":-1,"uptime":3605.534}


Звук

int SetVolume(int volume) — установка громкости воспроизведения. Громкость устанавливается от 0 до 100.
int GetVolume() — определение текущей громкости воспроизведения.
Mute() - включение/выключение звука.

  • Mute() автоматически переключает режим
  • Mute(0) включает звук
  • Mute(1) выключает звук
GetMute() - возвращает текущий режим режим.
  • 0 - звук включен,
  • 1 - звук выключен

Видео

int SetAlphaLevel(unsigned int) — установка уровня общей прозрачности графики относительно видео.
string GetAlphaLevel() — определение прозрачности.
int SetChromaKey(unsigned int) — установка абсолютно прозрачного цвета. Рекомендуемое значение 0x080810
DisableChromaKey() - выключение прозрачного цвета
EnableChromaKey() - включение обработки прозрачного цвета
int GetChromaKey() - возвращает прозрачный цвет.

int SetVideoMode(unsigned int aspect_ratio, unsigned int format) — установка видео режима (соотношение сторон + формат видео).
unsigned int GetAspectRatio() — определение соотношения сторон видео.
unsigned int GetVideoFormat() — определение видео формата.
int SetVideoFormat(unsigned int format) - установка видео формата.
string GetVideoMode() — определение видео режима (соотношение сторон + формат видео).
Форматы видео:
  • 0 PANSCAN (сохранение пропорций путем обрезки невлезающих фрагментов)
  • 1 LBOX (сохранение пропорций путем добавления черных полос)
  • 2 COMBI (комбинированный режим)
  • 3 NONE (масштабирование без сохранения пропорций)
Соотношения сторон:
  • 0 16x9
  • 1 14x9
  • 2 4x3
GetResolution(int) - возвращает объект с разрешением на одном из выходов. Досутпны такие свойства объекта: Width, Height
  • 0 HDMI
  • 1 RCA

GetResolution() - возвращает объект, хранящий разрешения обоих выводов. Доступны свойства HDMI и RCA, значения в которых эквивалентны выводу GetReolution, вызванному с соотвествующим параметром.
Например, ширину картинки на выходе HDMI можно узнать одном из двух способов: WRT.GetResolution().HDMI.Width или WRT.GetResolution(0).Width

int SetOutRect(QRect rect) — указание координат окна для вывода видео с указанным размером. Позволяет вывести видео в участок экрана.
int SetOutRect() - указание координат окна для вывода видео для текущего режима. Вызывает SetOutRect(QRect rect).
int SetOutRect(QSize resolution) - указание координат окна для вывода видео с указанным размером. Вызывает SetOutRect(QRect rect).
int SetOutRect(int x, int y, int width, int height) - указание координат окна для вывода видео. Вызывает SetOutRect(QRect rect).
int SetInRect(int x, int y, int width, int height) - TODO: в разработке.
int SetVideoOut(unsigned int out) - установка видео выхода, TODO: в разработке.
unsigned int GetVideoOut() - получение текущего видео выхода, TODO: в разработке.

void setHDMIEnabled(bool enable) - включение/отключение HDMI
  • setHDMIEnabled(1) включает HDMI
  • setHDMIEnabled(0) отключает HDMI
bool isHDMIEnabled() - проверка режима HDMI
  • 0 - HDMI выключен,
  • 1 - HDMI включен
int GetHdmiStatus() - возвращает статус HDMI. TODO: в разработке.
void setAVOUTEnabled(bool enable) - включение/отключение AV OUT
  • setAVOUTEnabled(1) включает AV OUT
  • setAVOUTEnabled(0) отключает AV OUT
bool isAVOUTEnabled() - проверка режима AV OUT
  • 0 - AV OUT выключен,
  • 1 - AV OUT включен

void switchVideoOut() - переключение видео выхода TODO: в разработке
int GetVTGMode() - режим VTG, TODO: в разработке.

int GetVidX(int x) - TODO: в разработке.
int GetVidY(int y) - TODO: в разработке.
int Seek(int seek, int from) - переход на указанную позицию.
string VideoHide(QString str) - спрятать видео, TODO: в разработке.
string GetPlayAddress() - путь/адрес воспроизводимого видео.
int SetWindow(int vp_id, int in_left, int in_top, int in_width, int in_height, int out_left, int out_top, int out_width, int out_height) - установка окна, TODO: в разработке.


Работа с файловой системой

string dir(string path) — получение списка файлов директории path.
object getFileInfo(string path) — список свойств файла: тип (файл/папка), размер.
array ListDir(string path, QStringList nameFilters, int mode) - получение расширенного списка файлов в директории.
void RemoveFile(QString fname) - удаление файла
void MoveFile(QString oldname, QString newname) - перемещение файла
int FileSize(QString path) - размер файла
Внешние носители располагаются в папке /media, прочие пути недоступны
Подробнее о работе с накопителями


Прочее

int Reboot() — перегрузка браузера
int SendEventToFucus(QString name) — отправка сообщений фокусному окну.
void sendEvent(int event) - отправка эвента.

int TCPPing(QString ip, int port, double timeout) - TODO: в разработке.
int SPDIFMode() - получение режима SPDIF. TODO: в разработке.
void SetSPDIFMode(int a) - установка режима SPDIF. TODO: в разработке.

string GetUptime() - получение времени работы после загрузки.
QStringList GetBytesTotal(int n) - TODO: в разработке.
QStringList GetPacketLost(int n) - TODO: в разработке.
QStringList GetBitrate(int n) - TODO: в разработке.
void SetAutoPower(bool s) - устанавливает AutoPower. TODO.
bool GetAutoPower() - получает текущее значение AutoPower. TODO.
int GetCurrentState() - получает текущее состояние. TODO: в разработке.
int CGStart() - Запуск CG. TODO: в разработке.
int CGStop() - Остановка CG. TODO: в разработке.
int GetAC3Capability() - возвращает возможность воспроизведения AC3.
bool checkKeyEvent(QKeyEvent ev, bool isMag)* - Проверка эвента. TODO.
QVariantMap Exec(QString command, QString stdin) - выполнени команды sh.
QVariantMap getPlayInfo() - получить информацию с плеера
QStringList parseM3U(QString path) - парсинг m3u файла.
void Update(QString src) - обновление. TODO.
QString RunAresScript(QStringList l, int not_wait) - запуск скрипта Ares. TODO.

string echo(string ) — вывод строки на консоль (используется для отладки)

SetAutoSaveCookies(bool save) - включение/выключение режима автосохранения куков
AutoSaveCookies() - получение режима автосохранения куков
ClearCookies() - очистка куков
goHome() - переход на домашнюю страницу
echo(string s) - вывод строки в консоль

object GetParams(array params_list) - Вывод параметров согласно запрашиваемому списку. Возвращает дерево параметров и их значений.
array SetParams(object params) - Задание параметров через ассоциативный массив. Возвращает список ошибочных параметров. Доступны параметры:
  • http: back_count - байт зарезервировано для обратного seek, buffer_fill (чтение) - текущее заполнение буфера, max_count - максимально-предельное заполнение до вызова события выхода из паузы или старта воспроизведения, max_count - максимально-предельное заполнение до вызова события ухода в паузу, size - размер буфера
    WRT.GetParams(['http']) //Вернет {"http":{"back_count":3355443,"buffer_fill":-1,"max_count":13421772,"min_count":6710886,"size":16777216}}
    WRT.SetParams({"http":{"back_count":3355443,"max_count":13421772,"min_count":6710886,"size":16777216}}) //Вернет []
    

int SetLanguagePriority(QStringList languages) - установка порядка выбора языков при воспроизведении. Функция принимает список трехсимвольных тэгов языков в формате ISO 639, например "rus" или "eng". При наличии в потоке нескольких дорожек, выбирается та из них, код языка которой в данном списке находится раньше.

Управление процессом browser

Ниже описаны методы объекта BrowserApi. Запуск из среды JS: BrowserApi.<функция>(параметр1, …)

resizeWindow(int w, int h) - изменение размера окна брацзера
setUserAgent(QString str) - изменение названия UserAgent
setCacheEnable(int e=1) - включение/выключение кэширования браузера
exec(string cmd) - выполнение команды, используя вызов execv
system(string cmd) - выполнение команды, используя вызов system
asyncSystem(string cmd) - выполнение команды, используя вызов system асинхронно
asyncUpdate(string url) - запуск процедуры обновления асинхронно
setAllowHotkeys(bool allowHotkeys) - включение/выключение предустановленной обработки некоторых клавиш пульта (standby, tv_format)
getAllowHotkeys() - получение состояния переключателя предустановленных клавиш
getUserAgent() - получение строки UserAgent
showhideVirtualKeyboard() - показать/скрыть виртуальную клавиатуру
showVirtualKeyboard() - показать виртуальную клавиатуру
hideVirtualKeyboard() - скрыть виртуальную клавиатуру
reboot() - перезагрузка браузера
load(QString url) - загрузка выбранного URL.
useMagJSAPI(bool used) - задание API Для использования
  • 0 - использовать API WRT.
  • 1 - использовать API MAG.

setZoomFactor(qreal factor) - установить зум. TODO.
goHome() - переход на домашнюю страницу
goSettings() - переход на страницу настроек
getHome() - вывести домашнюю страницу
cgSignalConnect(QString host, int port) - подключение сигнала CG. TODO: В Разработке.
cgSignalDisconnect() - отключение сигнала CG. TODO: В Разработке.
SendEventToFucus(QString keyName) — отправка сообщений фокусному окну.
SendEventToFucus(int key, bool meta, bool shift, bool ctrl, bool alt, QString text) — отправка сообщений фокусному окну с заданием модификаторов.

Добавлены методы для Device - setPlayerSize, setPlayerSizeFullscreen. Слой плеера на WRT находится под слоем интерфейса, но я нашла метод WRT. SetTopPlane - он меняет порядок отображения этих слоев(0 - сверху плеер, 1 - интерфейс). Правда метод не задокументирован, но на версии прошивки 1.006.010wrt он работает, этот метод отсутсвует у MAG, то есть скорее всего относится к API от WRT.
Изменения в версии engine 338, в версии impuls 273.