Описание

В сборке 5.2.841 добавлена возможность вставки одного опубликованного на сервере потока в другой. Эту функцию можно использовать, например, для добавления рекламы в поток. При этом содержимое одного потока полностью заменяется другим, либо до окончания публикации второго потока, либо до прекращения вставки.

Поддерживаемые кодеки

Видео:

Аудио:

Ограничения

1. Оба потока, к которым применяется вставка, должны быть закодированы одинаковыми аудио и видео кодеками.

2. Для аудио, должна быть одинаковая частота дискретизации и одинаковое количество каналов.

3. Вставка не применяется к потокам звонков. Для звонков используются собственные технологии вставки аудио и видео.

4. В один поток может быть вставлен только один поток одновременно, но один и тот же поток может быть вставлен в несколько потоков.

5. Циклическая вставка не поддерживается. Невозможно вставить stream1 в stream2, а затем stream2 в stream1 без остановки предыдущей вставки.

Управление вставкой при помощи REST API

REST-запрос должен быть HTTP/HTTPS POST запросом в таком виде:

Здесь:

REST-методы и статусы ответа

REST-метод

Пример тела REST-запроса

Пример тела REST-ответа

Статусы ответа

Описание

/stream/inject/startup

{
 "localStreamName": "stream1",
 "remoteStreamName": "stream2"
}

200 - OK

400 - Bad request

404 - Not found

409 - Conflict

500 - Internal error


Вставить поток stream2 в stream1


/stream/inject/find_all
[
 {
   "localStreamName": "stream1",
   "remoteStreamName": "stream2"
 }
]

200 - OK

404 - Not found


Найти все вставки на сервере
/stream/inject/terminate
{
 "localStreamName": "stream1"
}

200 - OK

400 - Bad request

404 - Not found

500 - Internal error


Остановить вставку в поток stream1

Параметры

Имя параметра

Описание

Пример

localStreamNameИмя потока, в который производится вставка
stream1
remoteStreamNameИмя потока, который будет вставлен
stream2

Настройка

В сборке 5.2.1235 добавлена настрока, которая определяет, в течение какого времени в миллисекундах необходимо ждать ключевого кадра во вставляемом потоке

inject_wait_keyframe_ms=1000

По умолчанию, интервал составляет 1000 миллисекунд. Если ключевой кадр во вставляемом потоке за это время не был получен, сервер начинает генерировать черный фон (по умолчанию), либо кадр с изображением из файла, заданного в настройке custom_watermark_filename . Это поведение можно отключить настройкой

inject_wait_keyframe_ms=-1

В этом случае будет продолжаться проигрывание потока, в который производится вставка, до момента получения ключевого кадра во вставляемом потоке.

Краткое руководство по тестированию

1. Для тестирования используем

2. Откройте приложение Media Devices, опубликуйте поток test разрешением 640x360

2. Проиграйте поток test в примере Player

3. Опубликуйте поток adv  в примере Media Devices, используя другую вкладку браузера, другую камеру или другой ПК

4. Откройте REST-клиент, отправьте запрос /stream/inject/startup

5. В потоке test воспроизводится содержимое потока adv

6. Отправьте запрос /stream/inject/terminate

7. В потоке test вновь играет оригинальное содержимое