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) - запись значения системной переменной.
- 0 - используется API WRT.
- 1 - используется API MAG.
- 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) выключает звук
- 0 - звук включен,
- 1 - звук выключен
Видео¶
int SetAlphaLevel(unsigned int) — установка уровня общей прозрачности графики относительно видео.
string GetAlphaLevel() — определение прозрачности.
int SetChromaKey(unsigned int) — установка абсолютно прозрачного цвета. Рекомендуемое значение 0x080810
DisableChromaKey() - выключение прозрачного цвета
EnableChromaKey() - включение обработки прозрачного цвета
int GetChromaKey() - возвращает прозрачный цвет.
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
- 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: в разработке.
- 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) - переход на указанную позицию.
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) - вывод строки в консоль
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.