Skip to end of metadata
Go to start of metadata

Описание

Поток, опубликованный на WCS-сервере, можно воспроизвести по RTSP в стороннем плеере. В этом случае WCS сам выступает в качестве RTSP-источника.

RTSP-кодеки

  • Видео: H.264, VP8
  • Аудио: AAC, G.711, Speex

Схема работы

  1. Браузер устанавливает соединение с сервером по Websocket
  2. Браузер захватывает камеру и микрофон и отправляет на сервер WebRTC-поток
  3. Проигрыватель VLC устанавливает соединение с сервером по RTSP
  4. Проигрыватель VLC получает поток c сервера и воспроизводит его

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

Трансляция видеопотока на сервер и воспроизведение его по RTSP в программном плеере

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

  • демо-сервер demo.flashphoner.com;
  • веб-приложение Two Way Streaming для публикации потока;
  • проигрыватель VLC для воспроизведения потока.

2. Откройте веб-приложение Two Way Streaming. Нажмите Connect, затем Publish. Скопируйте идентификатор потока:


3. Запустите VLC, выберите пункт меню "Медиа - Открыть URL". Введите URL WCS-сервера с указанием идентификатора потока, в данном примере
rtsp://demo.flashphoner.com/528e:


4. Нажмите кнопку "Воспроизвести". Проигрыватель начнет воспроизведение потока:


Последовательность выполнения операций (Call flow)

Ниже описана последовательность вызовов при воспроизведении потока по RTSP в программном плеере.


1. Программный проигрыватель устанавливает соединение с WCS-сервером по RTSP

2. Программный проигрыватель получает от WCS медиапоток.

Настройка RTSP сервера

По умолчанию, для обслуживания RTSP клиентов используется TCP порт 554. Это значение задается настройкой в файле flashphoner.properties

rtsp.port=554

Начиная со сборки 5.2.801, WCS запускается от пользователя flashphoner. В связи с этим, при ручном запуске сервера

cd /usr/local/FlashphonerWebCallServer/bin
sudo ./webcallserver start

RTSP сервер может не запуститься из-за того, что непривилегированным пользователям недоступны TCP порты в диапазоне 0-1000. В этом случае необходимо изменить RTSP порт, например

rtsp.port=5554

Аутентификация воспроизведения RTSP при помощи REST hook

При необходимости, может быть настроена аутентификация воспроизведения RTSP при помощи REST hook. Для этого, в файле flashphoner.properties необходимо указать следующую настройку:

rtsp_server_auth_enabled=true

При установке RTSP соединения, на бэкенд сервер отправляется запрос /playRTSP в приложение defaultApp

URL:http://localhost:8081/apps/EchoApp/playRTSP
OBJECT:
{
  "nodeId" : "NTk1tLorQ00llGbPJuFexrKceubGCR0k@192.168.1.5",
  "appKey" : "defaultApp",
  "sessionId" : "/192.168.1.100:59711/192.168.1.5:554",
  "mediaSessionId" : "29868390-73ee-4f49-ba92-78d717c53070-test-RTSP",
  "name" : "rtsp://test.flashphoner.com:554/test",
  "mediaProvider" : "RTSP",
  "userAgent" : "LibVLC/3.0.4 (LIVE555 Streaming Media v2016.11.28)"
}

Такой запрос отсылается при использовании всех RTSP-методов, кроме OPTIONS. Если бэкенд-сервер возвращает 200 OK, WCS сервер разрешает выполнение RTSP метода и воспроизведение RTSP потока. Если бэкенд-сервер возвращает 403 Forbidden, WCS сервер разрывает RTSP-соединение с клиентом.

Таким образом, RTSP клиент может быть аутентифицирован по URL RTSP потока, User-Agent, IP адресу и порту клиента и сервера.

Использование собственного ключа доступа и собственного приложения на бэкенде для аутентификации

В сборке 5.2.1008 добавлена возможность указать собственный ключ доступа (токен) для аутентификации в RTSP URL, например

rtsp://wcs:5554/streamName?aclAuth=1254789

Запрос /playRTSP, отправленный в этом случае к бэкенд-приложению defaultApp, будет выглядеть так

{
  "nodeId" : "XLepaP08Uyz9LqAjXHWnwuFxrEri0fCj@192.168.1.39",
  "appKey" : "testApp",
  "sessionId" : "/192.168.1.83:55195/192.168.1.39:5554",
  "mediaSessionId" : "71317dfc-0222-4acd-912e-57e67f2a272a-streamName-RTSP",
  "name" : "rtsp://wcs:5554/streamName?aclAuth=1254789",
  ...
  "mediaProvider" : "RTSP",
  "userAgent" : "LibVLC/3.0.8 (LIVE555 Streaming Media v2016.11.28)",
  "custom" : {
    "aclAuth" : "1254789"
  }
}

Имя параметра RTSP URL задается, как и для HLS, настройкой

client_acl_property_name=aclAuth

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

rtsp://wcs:5554/streamName?appKey=customAppKey&aclAuth=1254789

В этом случае запрос /playRTSP будет отправлен в указанное приложение (customAppKey  в примере выше).

Настройка параметров проигрывания RTSP

Для настройки параметров воспроизведения RTSP, например, для изменения кодека звука или видео, используется файл SDP rtsp_server.sdp. Обратите внимание, что в файле SDP обязательно должен быть указан IP-адрес WCS-сервера.

Известные проблемы

1. При проигрывании потоков высокого разрешения по RTSP через UDP могут наблюдаться потери кадров и артефакты

Симптомы: при проигрывании HD потока по RTSP картинка содержит артефакты, в логе плеера видны потери кадров

Решение: переключить плеер в interleaved режим, например, для VLC установить в разделе настроек Input/Codecs переключатель Live 555 stream transport в положение RTP over RTSP (TCP)

2. При проигрывании WebRTC потока как RTSP могут наблюдаться фризы, если плеер не получает ключевой кадр

Симптомы: фризы при проигрывании WebRTC потока в VLC как RTSP

Решение: включить настройку в файле flashphoner.properties

periodic_fir_request=true

3. При проигрывании потока как RTSP в VLC под Windows могут некорректно отображаться параметры дискретизации звука, битрейта аудио из-за бага VLC.