<<<
Назад
API музыкального плеера
Команды управления встроенным музыкальным плеером с примерами. Воспроизведение музыки на терминалах.
HTTP (AJAX) управление
Все команды выполняются с помощью HTTP GET запросов по адресу:
http://<адрес_сервера>/popup/app_player.html?ajax=1&command=<команда>¶m=<параметр>
Где:
- <адрес_сервера> – доменное имя или ip адрес сервера, на котором установлен MajorDoMo;
- <команда> – имя команды, которую необходимо выполнить (об этом ниже);
- <параметр> – данные, передаваемые команде.
Также, дополнительно можно передать еще несколько переменных:
- play_terminal=<терминал> – указывается имя терминала, для которого предназначается команда (по умолчанию – текущий терминал, если невозможно определить, то MAIN).
- session_terminal=<терминал> – имена терминалов, разделенные запятой, которые использует пользователь (в рамках данной сессии);
В результате выполнения команды будет возвращен JSON объект следующей структуры:
- success – результат выполнения команды (boolean);
- message – текстовое разъяснение результата выполнения или ошибки (string);
- data – данные, полученные в результате выполнения команды (если необходимо).
Список доступных команд:
Каждый тип терминала имеет свой набор доступных команд, зависящий от его технических возможностей. Получить данный список можно с помощью команды features:
http://localhost/popup/app_player.html?ajax=1&command=features
Ответ будет записан в data в виде массива строк с именами команд.
При попытке выполнить команду, которую данный тип терминала не поддерживает, то success будет установлен в false, а в message будет передано сообщение с описанием причины.
Для терминалов с полной совместимостью со всеми командами (например VLC через HTTP) список будет таким:
- status – получение информации о текущем состоянии плеера. На данный момент это одномерный массив из следующих значений:
- track_id – идентификатор воспроизводимого трека (integer, если воспроизведение остановлено, то -1);
- length – длина текущего трека в секундах (integer, если воспроизведение остановлено или невозможно определить данное значение, то 0);
- time – текущий прогресс воспроизведения в секундах (integer, если воспроизведение остановлено, то 0);
- state – статус воспроизведения (string, возможные значения: stopped/playing/paused/unknown);
- volume – уровень громкости в процентах (integer, некоторые типы плееров могут возвращать значение больше 100);
- random – режим воспроизведения треков в случайном порядке (boolean);
- loop – режим циклического воспроизведения плейлиста (boolean);
- repeat – режим циклического воспроизведения трека (boolean).
- play – воспроизвести указанный в param файл. В качестве ответа будет возвращен ID трека (integer);
- pause – поставить воспроизведение на паузу / снять с паузы. В качестве ответа будет возвращен статус (boolean): поставлено на паузу = true, снято с паузы = false;
- stop – остановить воспроизведение;
- next – следующий трек (в плейлисте). В качестве ответа будет возвращен ID трека (integer);
- previous – предыдущий трек (в плейлисте). В качестве ответа будет возвращен ID трека (integer);
- seek – перейти на указанную в param позицию (время в секундах от начала трека);
- set_volume – установить указанный в param уровень громкости (integer от 0 до 100);
- get_volume – получить текущее значение уровня громкости (integer от 0 до 100);
- set_system_volume - установить указанный в param уровень системной громкости сервера (integer от 0 до 100);
- get_system_volume - получить текущее значение системного уровня громкости сервера (integer от 0 до 100);
- pl_get – получить текущий плейлист. На данный момент это двумерный ассоциативный массив со следующей структурой:
- id – идентификатор трека (integer);
- name – название трека (string);
- file – путь до файла с треком (string).
- pl_add – добавить в плейлист новый файл, указанный в param. В качестве ответа будет возвращен ID трека (integer);
- pl_delete – удалить трек из плейлиста (по его id);
- pl_empty – очистить плейлист;
- pl_play – начать воспроизведение конкретного трека из плейлиста (по его id);
- pl_random – включить/отключить режим воспроизведения треков в случайном порядке. В качестве ответа будет возвращен статус (boolean): включено = true, отключено = false;
- pl_loop – включить/отключить режим циклического воспроизведения плейлиста. В качестве ответа будет возвращен статус (boolean): включено = true, отключено = false;
- pl_repeat – включить/отключить режим циклического воспроизведения текущего трека. В качестве ответа будет возвращен статус (boolean): включено = true, отключено = false;
Пример (jQuery):
// Устанавливаем уровень громкости мультимедиа на 70% для терминала MAIN
$.ajax({
url: '/popup/app_player.html?ajax=1&command=set_volume¶m=70&play_terminal=MAIN',
dataType: 'json'
}).done(function(json) {
if(json.success) {
// Если команда успешно выполнена, то сообщаем об этом
console.log('Готово!');
// Так же, можно вывести данные, полученные в результате выполнения команды
// Они хранятся в json.data и их формат различается для каждой из команд (см.выше)
} else {
// Если произошла ошибка, выводим ее описание
console.error(json.message);
}
});
PHP управление
Логика работы, аналогична той, что описана выше, потому повторяться не буду. Различается только код примера использования:
$player = new app_player();
$player->play_terminal = 'MAIN'; // Имя терминала
$player->command = 'set_volume'; // Команда
$player->param = 70; // Параметр
$player->ajax = TRUE;
$player->intCall = TRUE;
$player->usual($out);
if($player->json['success']) {
// Если команда успешно выполнена, то сообщаем об этом
echo 'Готово!';
// Так же, можно вывести данные, полученные в результате выполнения команды
// Они хранятся в $player->json['data'] и их формат различается для каждой из команд (см.выше)
} else {
// Если произошла ошибка, выводим ее описание
echo $player->json['message'];
}
Обсуждение (3)
(12)
...