Перейти к содержанию

Воспроизведение видео

Ниже описано, как получить поток видео и запустить его в вашем плеере. Порядок действий одинаков для фильма, серии и трейлера.

Перед началом работы

Убедитесь, что:

ВНИМАНИЕ

Поток видео 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": [ … ]
  }
}
  1. Если result равен error, см. раздел Ошибки.
  2. Если src пустой, пользователь не может смотреть видео. Проверьте restrictions[].code и действуйте по таблице ниже.
  3. Если 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. Запустите воспроизведение

  1. Передайте src плееру. Протокол указан в stream_type: hls, dash или mss.
  2. Если drm_type не пустой, укажите в плеере URL лицензии DRM:

    drm_type Система DRM Формат потока Данные для плеера
    modular Widevine DASH license_server
    playready PlayReady DASH license_server
    fairplay FairPlay HLS license_server и license_certificate

    Система DRM настраивается в MEGOGO для каждого ключа. С DRM отдаются только видео, у которых в фиде указана защита (protection не равен 0). Видео без DRM отдаются в протоколе, который MEGOGO настроил для вашего ключа (например, HLS). Используйте ключ той платформы, на которой пользователь смотрит видео. См. Учетные данные.

  3. Для меню выбора качества используйте bitrates. У каждого элемента свои src и license_server. У 4K-версии (is_uhd: true) есть только битрейт 2160. is_hdr: true означает, что видео в HDR.

  4. Чтобы продолжить просмотр с места остановки, начните воспроизведение с позиции play_start_time (в секундах).
  5. Выберите аудиодорожку и субтитры (см. Настройки воспроизведения).

Для серии в ответе также есть 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 · Сообщить о проблеме на этой странице