Changes

Jump to: navigation, search

Engine HTTP API

5,333 bytes added, 13:56, 3 December 2015
Получение статистики
</html></nowiki>
==Получение статистикиРасширенные возможности==Движок предоставляет некоторые дополнительные возможности по управлению сессией воспроизведения.Сюда входит возможность отправлять движку дополнительные команды, получать информацию про сессию воспроизведения, а также получать некоторые события.Для получения доступа к расширенным возможностям необходимо добавить такой параметр при необходимости может отдавать статистику по текущей старте сессии воспроизведения (скорость загрузки: <tt>format=json</tt> При получении данного параметра движок выдаст в ответ не медиа-поток, а набор ссылок в формате JSON: <tt><nowiki>{ "playback_url": playback_url, "stat_url: stat_url, "command_url": command_url, "event_url": event_url, кол-во подсоединенных узлов и т.д.)}</nowiki></tt>
Для ;playback_url:ссылка для получения статистики необходимо запросить у движка URL статистики при старте воспроизведения. Для этого нужно добавить параметр format=json в запрос на воспроизведение. При наличии данного параметра движок вернет ответ в формате JSON с двумя ссылкамимедиа-потока;stat_url:ссылка для получения информации про сессию*'''playback_url''' - ;command_url:ссылка для воспроизведения (по этой ссылке движок отдаст HLS-манифест либо HTTP-поток)отправки команд движку;event_url*'''stat_url''' - :ссылка для получения статистикисобытий
Пример: <nowikitt>Запрос:http:event_url</tt> в ответе выдается только в том случае, если страт выполнялся с параметром <tt>use_api_events</127tt>.0.0 По ссылке <tt>playback_url</tt> движок отдаст запрошенный медиа-поток.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 с такими полями:
"error": null
}</nowiki>
===Отправка команд движку===
По ссылке <tt>command_url</tt> движок принимает команды для управления сессией воспроизведения.
 
Название команды передается в параметре <tt>method</tt>.
 
На данный момент доступна одна команда: <tt>stop</tt> - остановить сессию воспроизведения.
 
Рекомендуется всегда останавлить сессию воспроизведения с помощью этой команды, когда воспроизведение останавливается на уровне плеера.
 
Пример:
<nowiki>Запрос:
http://127.0.0.1:6878/ace/cmd/5410b27fc567c35c8547e3b69b141215ce3a1fd7/ef0609c43e560697329d93dae4571edb?method=stop
 
Ответ:
{
"response": "ok",
"error": null
}</nowiki>
===Получение событий от движка===
Ссылка <tt>event_url</tt> используется для получения событий от движка методом long polling.
 
Данные по событию возвращаются в поле <tt>response</tt> в виде JSON-объекта с такими полями:
;name
:название события
;params
:объект с параметрами (значения зависят от события)
 
В версиях до 3003600 в поле <tt>response</tt> передается не сам JSON-объект, а его строковое представление.
 
Пример:
<nowiki>Запрос:
http://127.0.0.1:6878/ace/event/5410b27fc567c35c8547e3b69b141215ce3a1fd7/ef0609c43e560697329d93dae4571edb
 
Ответ (версия движка >= 3003600):
{
"response": {
"name": "got_codec_info",
"params: {
"audio_codec_id": 86018,
"video_codec_id": 28
}
},
"error": null
}
 
Ответ (версия движка < 3003600):
{
"response": "{\"name\": \"got_codec_info\"}, \"params\": {\"audio_codec_id\": 86018, \"video_codec_id\": 28}",
"error": null
}</nowiki>
 
 
Когда текущая сессия воспроизведения будет остановлена, <tt>event_url</tt> вернет такой ответ:
<nowiki>{
"response": null,
"error": "download stopped"
}</nowiki>
 
После получения такого ответа необходимо прекратить отсылать запросы на <tt>event_url</tt>.
 
====Список событий====
;missing_content
:движок не может найти запрашиваемый сегмент при воспроизведении HLS (плеер должен перемотать на live)
;got_codec_info
:доступна информация по кодекам потока.
:;параметры:
::video_codec_id - идентификатор видеокодека
::audio_codec_id - идентификатор аудиокодека
:Идентификаторы кодеков взяты из библиотеки ffmpeg, их можно найти [https://ffmpeg.org/doxygen/trunk/avcodec_8h_source.html здесь]
:Данное событие можно использовать для вывода сообщения в случае, если плеер не поддерживает данные кодеки.
;segmenter_failed
:встроенный в движок HLS-сегментатор не смог обработать поток (плеер должен остановить воспроизведение)
 
====Пример на javascript====
Данный пример использует библиотеку [https://jquery.com jQuery].
 
<nowiki>function startEventListener() {
$.ajax({
url: url,
method: "GET",
dataType: "json",
cache: false,
success: function(response) {
if(response.error) {
console.log("event listener: got error: " + response.error);
}
else {
var event = response.response;
if(typeof event !== "object") {
event = JSON.parse(event);
}
console.log("event listener: got event: name=" + event.name + " params=" + JSON.stringify(params));
// handle event here
// ...
// listen to the next event (long polling)
startEventListener(url);
}
},
error: function(xhr, status, error) {
console.log("event listener error: status=" + status + " error=" + error);
}
});
}
 
// init event listener
startEventListener("http://127.0.0.1:6878/ace/event/5410b27fc567c35c8547e3b69b141215ce3a1fd7/ef0609c43e560697329d93dae4571edb");</nowiki>
==Идентификатор плеера==

Navigation menu