JSAPI для IPTV¶
Обзор¶
На приставке реализована система команд и функций, доступных через интерфейс вызова 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);
- 0 - используется API WRT.
- 1 - используется API MAG.
- 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) выключает звук
- 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();
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);
- setHDMIEnabled(1) включает HDMI
- setHDMIEnabled(0) отключает HDMI
- 0 - HDMI выключен,
- 1 - HDMI включен
void setAVOUTEnabled(bool enable) - включение/отключение AV OUT
- setAVOUTEnabled(1) включает AV OUT
- setAVOUTEnabled(0) отключает 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.
- 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" |