Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 3 Next »

Описание

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

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

Видео:

  • H264
  • VP8

Аудио:

  • Opus
  • AAC
  • G711

Ограничения

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

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

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

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

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

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

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

  • HTTP: http://test.flashphoner.com:8081/rest-api/stream/inject/startup

  • HTTPS: https://test.flashphoner.com:8444/rest-api/stream/inject/startup

Здесь:

  • test.flashphoner.com - адрес WCS-сервера
  • 8081 - стандартный REST / HTTP порт WCS-сервера
  • 8444 - стандартный HTTPS порт
  • rest-api - обязательная часть URL
  • /stream/inject/startup - используемый REST-метод

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. Для тестирования используем

  • WCS-сервер;
  • Веб-приложение Media Devices для публикации потоков;
  • Две веб-камеры, либо два различных ПК для публикации потоков;
  • Веб-приложение Player для воспроизведения потока;
  • браузер Chrome и REST-клиент для отправки запросов на сервер

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 вновь играет оригинальное содержимое


  • No labels