dodocastРазработчикамPlayer SDK
Player SDKдля вашего сайта и сервера.
@dodocast/player встраивает плеер dodocast на ваши страницы, собирает прямые HLS-ссылки, читает, что идёт в канале 24/7 сейчас и что дальше, и подписывает ссылки на закрытое видео на вашем бэкенде. Без зависимостей, с типами TypeScript, лицензия MIT.
Четыре задачи — простые функции.
| Задача | Функции | Для чего |
|---|---|---|
| Ссылки и embed | watchUrl(), embedUrl(), embedHtml(), mount() — адаптивный или фиксированный размер, время начала, видео в плейлисте, секрет приватной ссылки | видео, плейлисты, трансляции, каналы 24/7 |
| Прямые HLS-ссылки | streamUrl() — fMP4/CMAF, MPEG-TS, byte-range для видео | видео, трансляции, каналы 24/7; Pro и Business |
| Данные канала | getChannelState() (сейчас и далее), getChannelGuide() (до двух недель), progress() | опубликованные каналы 24/7 |
| Подписанные ссылки | signToken(), signedStreamUrl(), signedPlaylistItemUrl() из @dodocast/player/server — JWT, HS256, до 24 ч | ваш собственный контент; Node.js 18+ |
Тот же embed, что в консоли.
embedHtml() возвращает ту же разметку, что кнопка «Встроить» в консоли; mount() вставляет её в элемент на вашей странице.
- Адаптивный по умолчанию, с любым соотношением сторон —
aspect: [9, 16]для вертикального видео. - Запуск видео с нужной секунды —
start, плейлист на нужном видео —item. - Где можно показывать плеер, задаётся у видео в консоли: везде, нигде или на списке до 50 доменов.
Виджет «Сейчас в эфире» в несколько строк.
Каждый опубликованный канал отдаёт своё состояние и программу передач в открытом JSON. SDK читает и то и другое и считает прогресс по часам сервера.
getChannelState(): в эфире канал или нет, текущее и следующее видео, текущая и следующая передача из сетки.getChannelGuide(): по умолчанию ближайшие 24 часа, любой интервал до двух недель — черезfromиto.- Запрашивайте состояние раз в 10–30 секунд: push-уведомлений нет.
Прямой HLS для hls.js, Safari и телевизоров.
streamUrl() собирает адрес манифеста. Открытый контент играет по нему напрямую, остальной отвечает 403, пока вы не подпишете ссылку на своём сервере.
- Видео: манифесты fMP4/CMAF, MPEG-TS и byte-range. Трансляции и каналы: fMP4/CMAF и MPEG-TS.
- Шифрованный контент играет в стандартных HLS-плеерах: URI ключа указан в манифесте.
- Удержание и досмотры измеряет плеер dodocast; просмотры в вашем плеере учитываются как трафик.
Кто смотрит, решает ваш бэкенд.
Создайте ключ в консоли: «Настройки» → «Ключи подписи». Ваш сервер выдаёт токен на одно видео, плейлист, трансляцию или канал, остальное сделает плеер.
- Заголовок
{ alg: HS256, kid }, тело{ code, iat, exp }, срок жизни — до 24 часов. - Секрет используется как строка — ровно в том виде, в каком его показывает консоль. Никогда не отдавайте его в браузер.
- Примеры на Python, PHP и Kotlin — в руководстве по подписанным ссылкам.
Чего SDK не умеет.
Чтобы вы учли это с самого начала.
- Нет API управления воспроизведением: у встроенного плеера нельзя вызвать play, pause или seek и нельзя слушать его события. Интеграция — это iframe; время начала и видео в плейлисте передаются в URL.
- Нет API загрузки и управления: загружайте и раскладывайте видео в консоли.
- Нет DASH и DRM. Шифрование — HLS AES-128 или SAMPLE-AES.
- Нет живого сигнала с камеры или энкодера: трансляции и каналы выпускают в эфир загруженные видео.
Работает ли без сборки?
Да. Это обычные ES-модули: импортируйте пакет из npm в своём сборщике или с ESM CDN в теге script.
Какой тариф нужен?
Embed и данные канала работают на всех тарифах. Прямые HLS-ссылки и подписанные ссылки — на Pro и Business.
Куда ведут ссылки?
По умолчанию — на watch.dodocast.com и stream.dodocast.com. На время раннего доступа передайте выданные вам хосты в опции hosts.
Это открытый код?
Да, MIT. Issues и pull requests на GitHub приветствуются.
До вашего канала — одна загрузка.
Мы открываем dodocast для первых партнёров: медиа, образование, события, корпоративное ТВ. Расскажите, что хотите выпустить в эфир.
или напишите на hello@dodocast.com