Воспроизведение видео¶
Ниже описано, как получить поток видео и запустить его в вашем плеере. Порядок действий одинаков для фильма, серии и трейлера.
Перед началом работы¶
Убедитесь, что:
- ваш код умеет подписывать запросы (см. Подпись запроса);
- для платных видео у пользователя есть токен доступа (см. Авторизация пользователя);
- ваш плеер поддерживает протоколы и системы DRM, которые MEGOGO настроил для вашего ключа (см. Учетные данные).
ВНИМАНИЕ
Поток видео fvod или advod Content API отдает без привязки к
пользователю. Такие видео входят в вашу подписку, поэтому, прежде чем
запрашивать поток, убедитесь, что у пользователя она есть.
Схема взаимодействия¶
sequenceDiagram
participant App as Приложение партнера
participant Server as Сервер партнера
participant API as MEGOGO Content API
participant CDN as MEGOGO CDN
App->>Server: Пользователь нажимает «Смотреть»
Server->>Server: Проверка доступа пользователя
Server-->>App: Подписанный URL /stream
App->>API: GET /stream
API-->>App: src, drm_type, audio_tracks, subtitles
App->>CDN: GET src (манифест)
CDN-->>App: Видео
Шаг 1. Получите подписанный URL¶
Подписанный URL запроса /stream формирует ваш сервер — так приватный
ключ не покидает его.
| Параметр | Обязательный | Описание |
|---|---|---|
video_id |
Да | ID фильма, серии или трейлера |
lang |
Нет | Язык текста в ответе, например en |
access_token |
Для платных видео | Токен доступа пользователя |
sign |
Да | Подпись всех остальных параметров в том порядке, в котором они идут в URL |
https://api.megogo.net/v1/stream?video_id={video_id}&lang=en&access_token={access_token}&sign={sign}
Для сериала передавайте ID серии. ID серий можно взять из XML-фида
(seria@id) или из Content API: /video/info возвращает список сезонов
(season_list) и серии первого сезона, а серии остальных сезонов
возвращает /video/episodes?id={season_id}. Если передать в /stream
ID сериала, в ответе придет первая серия.
Для трейлера передавайте его ID (trailer_id из /video/info или
trailer@id из фида) без access_token.
Шаг 2. Отправьте запрос с устройства пользователя¶
Запрос должно отправлять приложение на устройстве, а не ваш сервер: страну пользователя MEGOGO определяет по IP-адресу запроса.
Если запрос все же должен отправлять сервер, сообщите об этом вашему менеджеру MEGOGO. Тогда MEGOGO закрепит за вашим ключом фиксированный регион, а за то, где находятся ваши пользователи, будете отвечать вы.
ВНИМАНИЕ
Отправляйте /stream только тогда, когда пользователь запускает
воспроизведение. Для арендованного (TVOD) видео первый же ответ с
src запускает период аренды. Не отправляйте этот запрос, чтобы
заранее подготовить или проверить поток.
Шаг 3. Проверьте ответ¶
Ожидаемый ответ для видео, которое пользователю доступно (сокращен):
{
"result": "ok",
"code": 200,
"data": {
"video_id": 12345,
"title": "Example film",
"src": "https://…/playlist.m3u8?…",
"stream_type": "hls",
"content_type": "vod",
"drm_type": "",
"license_server": "",
"play_start_time": 0,
"credits_start": 5400,
"bitrates": [ … ],
"audio_tracks": [ … ],
"subtitles": [ … ]
}
}
- Если
resultравенerror, см. раздел Ошибки. - Если
srcпустой, пользователь не может смотреть видео. Проверьтеrestrictions[].codeи действуйте по таблице ниже. - Если
srcне пустой, переходите к шагу 4.
restrictions[].code |
Причина | Что делать |
|---|---|---|
NOT_PURCHASABLE |
У пользователя нет подписки или покупки для этого видео либо в запросе нет access_token |
Предложите оформить подписку или покупку. Если услуга у пользователя есть, получите новый токен доступа |
CONTRACT, NO_CONTRACT |
Видео не входит в ваш контракт | Не показывайте видео |
NO_VOD_COUNTRY, NOT_ENABLED_IN_COUNTRY |
Видео недоступно в стране пользователя | Сообщите пользователю, что в его стране это видео недоступно |
NO_BITRATE |
Для вашего ключа нет ни одного доступного качества видео. Например, это 4K-версия, а 4K для ключа не настроено | Не показывайте видео с этим ключом. Чтобы показывать 4K-видео, обратитесь к вашему менеджеру MEGOGO |
NO_DRM_SUPPORT, DRM |
Видео защищено DRM, а ваш ключ DRM не поддерживает | Не показывайте видео с этим ключом. Обсудите с вашим менеджером MEGOGO DRM для вашей платформы |
PARTNER_IS_DISABLED |
Ваш ключ отключен | Сообщите об этом вашему менеджеру MEGOGO |
Не показывайте пользователю restrictions[].message как причину отказа:
это общий текст.
Шаг 4. Запустите воспроизведение¶
- Передайте
srcплееру. Протокол указан вstream_type:hls,dashилиmss. -
Если
drm_typeне пустой, укажите в плеере URL лицензии DRM:drm_typeСистема DRM Формат потока Данные для плеера modularWidevine DASH license_serverplayreadyPlayReady DASH license_serverfairplayFairPlay HLS license_serverиlicense_certificateСистема DRM настраивается в MEGOGO для каждого ключа. С DRM отдаются только видео, у которых в фиде указана защита (
protectionне равен0). Видео без DRM отдаются в протоколе, который MEGOGO настроил для вашего ключа (например, HLS). Используйте ключ той платформы, на которой пользователь смотрит видео. См. Учетные данные. -
Для меню выбора качества используйте
bitrates. У каждого элемента своиsrcиlicense_server. У 4K-версии (is_uhd: true) есть только битрейт 2160.is_hdr: trueозначает, что видео в HDR. - Чтобы продолжить просмотр с места остановки, начните воспроизведение
с позиции
play_start_time(в секундах). - Выберите аудиодорожку и субтитры (см. Настройки воспроизведения).
Для серии в ответе также есть root_video_id (ID сериала), prev и
next (ID предыдущей и следующей серии). По next можно запустить
следующую серию. У первой серии нет prev, у последней — next.
credits_start — время начала финальных титров в секундах. В этот момент
можно предложить пользователю следующую серию.
ВНИМАНИЕ
src содержит данные пользователя. Не кешируйте src, не записывайте
его в логи и никому не передавайте. Отправляйте новый запрос
/stream каждый раз, когда пользователь запускает воспроизведение.
Поле advert_url не используйте.
Ошибки¶
| Ответ | Причина | Что делать |
|---|---|---|
HTTP 400, "message": "You entered wrong sign key" |
Неверная подпись | Убедитесь, что в подписи есть все параметры в порядке следования в URL, включая access_token. См. Подпись запроса |
HTTP 200, "result": "error", "code": 400 |
В запросе нет video_id или это не число |
Передайте правильный video_id |
HTTP 200, "result": "error", "code": 403 |
Токен доступа неверный или истек | Получите новый токен доступа. См. Авторизация пользователя |
HTTP 200, "result": "error", "code": 404 |
Видео не найдено | Не показывайте видео и удалите его из своего каталога |
HTTP 200, "result": "ok", пустой src |
Пользователь не может смотреть видео | Проверьте restrictions (шаг 3) |
| HTTP 429 | Слишком много запросов | Снизьте частоту запросов |
Дальнейшие шаги¶
Версия руководства 1.4.1, 2026-10-31 · Сообщить о проблеме на этой странице