379
edits
Changes
→Получение статистики
</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>
По ссылке <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>
==Идентификатор плеера==