Project

General

Profile

JSAPI для IPTV

Навигация по документу
Конфигурация режима отображения Управление процессом browser Звук Конфигурация STB
Включение/выключение STB Работа с файловой системой Видео Воспроизведение
Обработка событий Прочее GetPlayInfo KeyCodes

Обзор

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

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

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

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


Команды JSAPI

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

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

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

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

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

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

QString GetKey(QString);
void SetKey(QString, QString);

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

QString GetMimeType(QString path) - получить MIME-тип файла.
QString GetAlbumCover(QString file) - получить расположение обложки альбома (только для аудио файлов).
int GetTemperature() - получение температуры процессора. -1 если не поддерживаетсяп


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

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 Pause(QString filename, int circ_file_min); - приостановка воспроизведения потока и начало записи в случае igmp.
int Continue() - на данном этапе то же, что и int Play().
int Continue() — то же, что и Play().
int Kill() - на данном этапе то же, что и int Stop().
QString VideoHide(QString state) - прячет видео поток.
int SetPosition(double position) — установка позиции с которой будет идти воспроизведение потока. Используется для rtsp
int SetPos(double position) — вызывает SetPosition(double position).
double GetPosition - определение текущей позиции в воспроизводимом потоке. Используется для rtsp.
double GetPos() — вызывает GetPosition().
double GetMSecPos()
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() — определение текущей громкости воспроизведения.
void Mute(int mute=-1)
Mute() - включение/выключение звука.

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

Видео

int SetAlphaLevel(double)
int SetAlphaLevel(unsigned int) — установка уровня общей прозрачности графики относительно видео. range 0-99

double GetAlphaLevel();
QString GetAlphaLevel() — определение прозрачности.

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

QSize GetVideoSize();
double GetVideoScale();

int SetVideoMode(unsigned int aspect_ratio, unsigned int format) — установка видео режима (соотношение сторон + формат видео).
unsigned int GetAspectRatio() — определение соотношения сторон видео.
unsigned int GetVideoFormat() — определение видео формата.
int SetVideoFormat(unsigned int format) - установка видео формата.
QString GetVideoMode() — определение видео режима (соотношение сторон + формат видео).
QStringList GetVideoMode();
Форматы видео:
  • 0 PANSCAN (сохранение пропорций путем обрезки невлезающих фрагментов)
  • 1 LBOX (сохранение пропорций путем добавления черных полос)
  • 2 COMBI (комбинированный режим)
  • 3 NONE (масштабирование без сохранения пропорций)
Соотношения сторон:
  • 0 16x9
  • 1 14x9
  • 2 4x3
QSize GetOsdResolution();
void SetOsdResolution(QSize, int = 32);
void SetOsdResolution(int, int, int = 32);
QSize GetDisplayResolution();
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();/*!< Установка координат окна во весь экран для вывода видео /
*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 SetOutRect(int x, int y, int width, int height);/*!< Установка координат окна для вывода видео /
*int SetInRect(int x, int y, int width, int height)
- TODO: в разработке.
int SetVideoOut(unsigned int out) - установка видео выхода, TODO: в разработке.
unsigned int GetVideoOut() - получение текущего видео выхода, TODO: в разработке.

int SetOutRect(QRect);
int SetOutRect(QSize);

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) - переход на указанную позицию.
QString VideoHide(QString str) - спрятать видео, TODO: в разработке.
QString 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.
QStringList dir(QString path)
static QVariantMap getFileInfo(QString path) — список свойств файла: тип (файл/папка), размер.

array ListDir(string path, QStringList nameFilters, int mode) - получение расширенного списка файлов в директории.
QVariantList ListDir(QString path, QStringList nameFilters=QStringList(), int mode=0);
mode 1 - show files
mode 2 - show dirs
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) Проверка доступности порта по TCP
int TCPPing(QString ip, int port, double timeout) - TODO: в разработке.
int SPDIFMode() - получение режима SPDIF. TODO: в разработке.
void SetSPDIFMode(int a) - установка режима SPDIF. TODO: в разработке.

QString GetUptime() - получение времени работы после загрузки.
QStringList GetBytesTotal(int n) - TODO: в разработке.
QStringList GetPacketLost(int n) - TODO: в разработке.
QStringList GetBitrate(int n) - TODO: в разработке.
void SetAutoPower(bool s) - включить/выключить автоматическую обработку power приложением
bool GetAutoPower() - Возвращает текущее абстрактное состояние
int GetCurrentState() - получает текущее состояние. TODO: в разработке.
int CGStart() - Запуск CG. TODO: в разработке.
int CGStop() - Остановка CG. TODO: в разработке.
int GetAC3Capability() - возвращает возможность воспроизведения AC3.
static bool checkKeyEvent(QKeyEvent ev, QString)* - Проверка эвента. TODO.

void Terminate();
QVariantMap Exec(QString command, QString stdin) - выполнени команды sh.
QVariantMap getPlayInfo() - получить информацию с плеера
QStringList parseM3U(QString path) - парсинг m3u файла.
void Update(QString src) - обновление. TODO.
void UpdateGui(QString imageUrl, QString cancelUrl = "", bool force = false);
QString RunAresScript(QStringList l, int not_wait); Запуск скрипта ares.sh с параметрами

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

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

QVariantMap GetParams(QStringList params_list) - Вывод параметров согласно запрашиваемому списку. Возвращает дерево параметров и их значений.
QStringList SetParams(QVariantMap 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". При наличии в потоке нескольких дорожек, выбирается та из них, код языка которой в данном списке находится раньше.

void SetDescremblerKeys();
void SetDescremblerKeys(QString type, QString odd, QString even);
bool IsPlaying();
void BlinkLed();
void SetLedColor(QString = "");
bool BurnCHKeys(QString, int = 7788);
bool SendCHKeys(QString, int = 7788);
bool CGConnect(QString, int);
void CGDisconnect();

void PlayImage(QString);
void SaveUserData(QString filename, QString text);
QString LoadUserData(QString filename);
bool GetLanLinkStatus();
bool GetWifiLinkStatus();
bool GetPppoeLinkStatus();
QString GetPppoeIp();
QVariantMap GetLastUpdateParams();
void ClearLastUpdateParams();
bool IsHdcpAuthenticated();
bool GetHdcpEnabled();
void SetHdcpEnabled(bool enabled);
void StartVMX(bool sync = false);
bool IsVMXInited();
QDateTime GetKernelBuildDate();
void InitPlayer();
void SyncFs();
void ResetEnv();
void ResetDecoders();




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

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

void resizeWindow(int w, int h) - изменение размера окна брацзера
void setUserAgent(QString str) - изменение названия UserAgent
void setCachegoEnable(int e=1) - включение/выключение кэширования браузера
void exec(QString cmd) - выполнение команды, используя вызов execv
void system(QString cmd) - выполнение команды, используя вызов system
void asyncSystem(QString cmd) - выполнение команды, используя вызов system асинхронно
void AsyncUpdate(QString str) - запуск процедуры обновления асинхронно
void setAllowHotkeys(bool allowHotkeys) - включение/выключение предустановленной обработки некоторых клавиш пульта (standby, tv_format)
bool getAllowHotkeys() - получение состояния переключателя предустановленных клавиш
void echo(QString ) const - вывод строки на консоль (используется для отладки)
QString getUserAgent() - получение строки UserAgent

void showHideVirtualKeyboard() - показать/скрыть виртуальную клавиатуру
void showVirtualKeyboard() - показать виртуальную клавиатуру
void hideVirtualKeyboard() - скрыть виртуальную клавиатуру

void showMain();
void hideMain();

void ShowTransparentWidget(bool);
void SetTransparentWidgetGeometry(int, int, int, int);
void SetTransparentWidgetStyleSheet(QString);
void SetDisplayMode(QString mode);
void SetDisplayMode(int mode);
void SetDisplayMode();
QString GetDisplayMode();

void reboot() - перезагрузка браузера
void load(QString url) - загрузка выбранного URL.

void useMagJSAPI(bool used) - задание API Для использования
  • 0 - использовать API WRT.
  • 1 - использовать API MAG.

void setZoomFactor(qreal factor) - установить зум. TODO.

void SendKey(int );
void GoUrl(QUrl);
void GoUrl(QString);

void goHome() - переход на домашнюю страницу
void goStart()
void goEmbedded(QString referer = "")
void GoSettings(QString="") - переход на страницу настроек
QString getHome() - вывести домашнюю страницу
void EnableVKButton(bool)

int cgSignalConnect(QString host, int port) - подключение сигнала CG. TODO: В Разработке.
int cgSignalDisconnect() - отключение сигнала CG. TODO: В Разработке.
void SendEventToFucus(QString) — отправка сообщений фокусному окну.
void SendEventToFucus(int, bool, bool, bool, bool, QString) — отправка сообщений фокусному окну с заданием модификаторов.

void SetTopPlane(int);

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


Конфигурация режима отображения

WRT.GetDisplayMode() - получить текущий режим
1080p50 - формат сообщения

WRT.SetDisplayMode(int) - задать режим через число
WRT.SetDisplayMode(string) - задать режим через строку

Список режимов
Числовой Строковый
-1 DISPLAY_MODE_AUTO "auto"
0 DISPLAY_MODE_480I60 "480i"
1 DISPLAY_MODE_480P60 "480p"
2 DISPLAY_MODE_576I50 "576i"
3 DISPLAY_MODE_576P50 "576p"
4 DISPLAY_MODE_720P60 "720p60"
5 DISPLAY_MODE_720P50 "720p50"
6 DISPLAY_MODE_1080I60 "1080i60"
7 DISPLAY_MODE_1080I50 "1080i50"
8 DISPLAY_MODE_1080P24 "1080p24"
9 DISPLAY_MODE_1080P25 "1080p25"
11 DISPLAY_MODE_1080P60 "1080p60"
12 DISPLAY_MODE_1080P50 "1080p50"
13 DISPLAY_MODE_4KP24 "4kp24"
14 DISPLAY_MODE_4KP25 "4kp25"
15 DISPLAY_MODE_4KP30 "4kp30"
16 DISPLAY_MODE_4KP50 "4kp50"
17 DISPLAY_MODE_4KP60 "4kp60"
18 DISPLAY_MODE_4KPSMPTE "4kpsmpte"