На главную

MelonPlayer. Описание API ядра.

Не используйте никакие методы и свойства, не описанные в данном документе. Лучше напишите разработчику, что надо расширить API.

Как подключить

Чтобы использовать плеер на своей странице, необходимо добавить 2 скрипта:

<script src="//connect.melonplayer.com/dist/clappr/clappr.min.js"></script>
<script src="//connect.melonplayer.com/dist/melon-player-core.js"></script>

API

В глобальное пространство имен добавляется 1 объект - MelonPlayer. Он имеет следующие свойства.

MelonPlayer.Core

Это конструктор для плеера без UI. При создании принимает объект конфигурации.

const player = new MelonPlayer.Core({
    // ссылка на вещание, обязательное поле
    source: "//hls-01-radio7.emgsound.ru/13/playlist.m3u8", 
    // HTMLElement для встраивания, обязательное поле.
    // можно передать document.createElement('div'), если не нужна поддержка IE11
    parent: document.querySelector("#hidden_element"), 
    // Настройки метаданных (необязательное поле).
    // Также любое из вложенных полей можно пропустить.
    metadata: { 
        // ссылка на JSON с метаданными
        jsonUrl: "https://metaradio7.hostingradio.ru/current.json",
        // ссылка на JSON для проверки обновления метаданных
        uniqueIdJsonUrl: "https://metaradio7.hostingradio.ru/id.json", 
        // Указание плееру читать метаданные из hls потока. 
        // Нужно только если такие метаданные там есть.
        isInAudioStream: true,
        // Указание плееру при запросе метаданных отсылать куки. 
        // Нужно если метаданные доступны только после авторизации пользователя.
        withCredentials: true, 
    },
    // Начальное состояние плеера (необязательное поле)
    // Любое из вложенных полей также можно пропустить.
    state: {
        volume: 50, // громкость
        isMuted: true, // отключение звука
        // Плеер начнет играть сразу после создания
        // Может работать не всегда, так многие браузеры запрещают autoplay 
        // до первого взаимодействия с интерфейсом
        isPlaying: true,      
    },   
});

Объект конфигурации должен содержать в себе следующие свойства:

Объект возвращаемый конструктором MelonPlayer.Core имеет следующие методы:

MelonPlayer.Events

Плеер в процессе работы может возбуждать различные события, подписаться/отписаться на которые можно при помощи методов on()/off(). Например:

var player = new MelonPlayer.Core({ /* объект конфигурации */ });
player.on(MelonPlayer.Events.METADATA_UPDATED, ({metadata, delay}) => {
     // работа с метаданными   
});

Не используйте значения свойств объекта MelonPlayer.Events напрямую! Они могут поменяться в дальнейшем, то есть вместо player.on("METADATA_UPDATED", callback) следует писать player.on(MelonPlayer.Events.METADATA_UPDATED, callback).

Сводный пример

Типовая инициализация плеера.

HTML:

<!-- Следует добавить этот код куда-нибудь в body -->
<style>
    .invisible {
        width: 0;
        height: 0;
        left: -999em;
        top: -999em;
        position: absolute;
        opacity: 0;
        overflow: hidden;
        z-index: -1000;
    }
</style>
<div id="hidden_element" class="invisible"></div>

JavaScript:

// создаем плеер
var player = new MelonPlayer.Core({
    source: "//hls-01-radio7.emgsound.ru/13/playlist.m3u8",
    parent: document.querySelector("#hidden_element"),
    metadata: {
        jsonUrl: "https://metaradio7.hostingradio.ru/current.json",
        checkJsonUrl: "https://metaradio7.hostingradio.ru/id.json"
    }
});

// устанавливаем обработчики событий
player.on(MelonPlayer.Events.METADATA_UPDATED, ({metadata, delay}) => {
     // работа с метаданными   
});

// Методы плеера должны быть использованы внутри обработчиков событий взаимодействия пользователя с интерфейсом плеера.

Интерактивные примеры с кодом доступны по ссылкам: