В сборке 5.2.841 добавлена возможность вставки одного опубликованного на сервере потока в другой. Эту функцию можно использовать, например, для добавления рекламы в поток. При этом содержимое одного потока полностью заменяется другим, либо до окончания публикации второго потока, либо до прекращения вставки.
Видео:
Аудио:
1. Оба потока, к которым применяется вставка, должны быть закодированы одинаковыми аудио и видео кодеками.
2. Для аудио, должна быть одинаковая частота дискретизации и одинаковое количество каналов.
3. Вставка не применяется к потокам звонков. Для звонков используются собственные технологии вставки аудио и видео.
4. В один поток может быть вставлен только один поток одновременно, но один и тот же поток может быть вставлен в несколько потоков.
5. Циклическая вставка не поддерживается. Невозможно вставить stream1 в stream2, а затем stream2 в stream1 без остановки предыдущей вставки.
REST-запрос должен быть HTTP/HTTPS POST запросом в таком виде:
HTTP: http://test.flashphoner.com:8081/rest-api/stream/inject/startup
Здесь:
REST-метод | Пример тела REST-запроса | Пример тела REST-ответа | Статусы ответа | Описание | |
---|---|---|---|---|---|
/stream/inject/startup |
| 200 - OK 400 - Bad request 404 - Not found 409 - Conflict 500 - Internal error | Вставить поток stream2 в stream1 | ||
/stream/inject/find_all |
| 200 - OK 404 - Not found | Найти все вставки на сервере | ||
/stream/inject/terminate |
| 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 вновь играет оригинальное содержимое