Difference between revisions of "Engine HTTP API"

From Ace Stream Wiki
Jump to: navigation, search
(Получение статистики)
Line 39: Line 39:
 
*'''playback_url''' - ссылка для воспроизведения (по этой ссылке движок отдаст HLS-манифест либо HTTP-поток)
 
*'''playback_url''' - ссылка для воспроизведения (по этой ссылке движок отдаст HLS-манифест либо HTTP-поток)
 
*'''stat_url''' - ссылка для получения статистики
 
*'''stat_url''' - ссылка для получения статистики
 +
 +
Пример:
 +
<nowiki>Запрос:
 +
http://127.0.0.1:6878/ace/manifest.m3u8?id=dd1e67078381739d14beca697356ab76d49d1a2d&format=json
 +
 +
Ответ:
 +
{
 +
  "stat_url": "http://127.0.0.1:6878/ace/stat/6d12f958332ef0bd258053ba1afd833ddf9b74f9/f528764d624db129b32c21fbca0cb8d6",
 +
  "playback_url": "http://127.0.0.1:6878/ace/m/6d12f958332ef0bd258053ba1afd833ddf9b74f9/f528764d624db129b32c21fbca0cb8d6.m3u8"
 +
}</nowiki>
  
 
По ссылке <tt>stat_url</tt> движок возвращает ответ в формате JSON с такими полями:
 
По ссылке <tt>stat_url</tt> движок возвращает ответ в формате JSON с такими полями:
Line 51: Line 61:
 
*'''total_progress''' - процент загруженных данных от суммарного объема (для VOD); для live всегда 0
 
*'''total_progress''' - процент загруженных данных от суммарного объема (для VOD); для live всегда 0
  
 +
Пример:
 +
<nowiki>Запрос:
 +
http://127.0.0.1:6878/ace/stat/6d12f958332ef0bd258053ba1afd833ddf9b74f9/f528764d624db129b32c21fbca0cb8d6
 +
 +
Ответ:
 +
{
 +
  "response": {
 +
    "status": "dl",
 +
    "uploaded": 0,
 +
    "speed_down": 516,
 +
    "speed_up": 0,
 +
    "downloaded": 14155776,
 +
    "peers": 2,
 +
    "total_progress": 0
 +
  },
 +
  "error": null
 +
}</nowiki>
  
 
==Идентификатор плеера==
 
==Идентификатор плеера==

Revision as of 10:13, 28 May 2015

Общее описание

Начиная с версии 3.1 появилась возможность управлять движком по протоколу HTTP. Для передачи команды движку нужно отправить HTTP GET запрос на http-порт движка. Порт по умолчанию: 6878.

Методы API

В описаниях методов <engine_address> - это ip-адрес движка, <engine_port> - http-порт движка. Все методы принимают такие общие параметры:

  • sid - идентификатор плеера (необязательный параметр)
  • id - идентификатор контента (content id) (условно обязательный параметр)
  • url - ссылка на транспортный файл (условно обязательный параметр)
  • path - путь к транспортному файлу в локальной файловой системе (условно обязательный параметр)

В запросах на старт воспроизведения обязательно должен присутствовать один из параметров id, url, path.

Получение потока в формате HLS

http://<engine_address>:<engine_port>/ace/manifest.m3u8

В ответ на данную команду движок выдаст HLS плейлист для воспроизведения запрашиваемого контента. В случае ошибки будет возвращен HTTP код 4хх либо 5хх с кратким описанием ошибки.

Параметры:

  • transcode_audio - транскодировать аудио в AAC (параметр принимает значения 0 либо 1)
  • transcode_mp3 - не транскодировать MP3 (параметр принимает значения 0 либо 1)
  • preferred_audio_language - предпочитаемый язык аудио-дорожки (3-значный код, список здесь)

Пример:

http://127.0.0.1:6878/ace/manifest.m3u8?id=dd1e67078381739d14beca697356ab76d49d1a2d

Получение потока по HTTP

http://<engine_address>:<engine_port>/ace/getstream

В ответ на данную команду движок будет выдавать данные в виде http progressive download. В случае ошибки будет возвращен HTTP код 4хх либо 5хх с кратким описанием ошибки.

Пример:

http://127.0.0.1:6878/ace/getstream?id=dd1e67078381739d14beca697356ab76d49d1a2d

Получение статистики

Движок при необходимости может отдавать статистику по текущей сессии воспроизведения (скорость загрузки, кол-во подсоединенных узлов и т.д.)

Для получения статистики необходимо запросить у движка URL статистики при старте воспроизведения. Для этого нужно добавить параметр format=json в запрос на воспроизведение. При наличии данного параметра движок вернет ответ в формате JSON с двумя ссылками:

  • playback_url - ссылка для воспроизведения (по этой ссылке движок отдаст HLS-манифест либо HTTP-поток)
  • stat_url - ссылка для получения статистики

Пример:

Запрос:
http://127.0.0.1:6878/ace/manifest.m3u8?id=dd1e67078381739d14beca697356ab76d49d1a2d&format=json

Ответ:
{
  "stat_url": "http://127.0.0.1:6878/ace/stat/6d12f958332ef0bd258053ba1afd833ddf9b74f9/f528764d624db129b32c21fbca0cb8d6",
  "playback_url": "http://127.0.0.1:6878/ace/m/6d12f958332ef0bd258053ba1afd833ddf9b74f9/f528764d624db129b32c21fbca0cb8d6.m3u8"
}

По ссылке stat_url движок возвращает ответ в формате JSON с такими полями:

  • status - статус сессии воспроизведения:
    • prebuf - пребуферизация
    • dl - воспроизведение
  • peers - кол-во подсоединенных узлов
  • speed_down - скорость скачивания (Кбайт/с)
  • speed_up - скорость отдачи (Кбайт/с)
  • downloaded - объем скачанных данных (байт)
  • uploaded - объем отданных данных (байт)
  • total_progress - процент загруженных данных от суммарного объема (для VOD); для live всегда 0

Пример:

Запрос:
http://127.0.0.1:6878/ace/stat/6d12f958332ef0bd258053ba1afd833ddf9b74f9/f528764d624db129b32c21fbca0cb8d6

Ответ:
{
  "response": {
    "status": "dl",
    "uploaded": 0,
    "speed_down": 516,
    "speed_up": 0,
    "downloaded": 14155776,
    "peers": 2,
    "total_progress": 0
  },
  "error": null
}

Идентификатор плеера

Идентификатор плеера - произвольная строка, которая идентифицирует плеер при обращении к движку. В качестве идентификатора лучше всего использовать случайное число.

Предназначение идентификатора плеера - дать движку возможность отличать запросы одного плеера от другого. Это связано с таким ограничением - нельзя просматривать одну и ту же live-трансляцию через движок одновременно в двух плеерах. При возникновении такой ситуации результаты непредсказуемы (трансляция может начать идти с перебоями в обоих плеерах). В связи с этим движок перестает отдавать плееру данные по трансляции, если эту же трансляцию запустили в другом плеере, но делает это только в том случае, если может отличить один плеер от другого.