Для ведения живой видео трансляции поток сначала должен быть доставлен на сервера публикации CDN. Источником трансляции может быть сервер, IP-камера, ноутбук со специальным ПО, другое кодирующее устройство (кодер). Существует несколько способов доставки потока на сервера публикации CDN.
В сети CDN поток будет размножен в необходимом количестве, преобразован в требуемый формат и транслирован конечным пользователям с оптимальных узлов раздачи. Трансляция инициируется по запросу от пользовательского плеера к серверу раздачи. Ограничений на тип пользовательского плеера не накладывается.
Возможно проведение трансляции одного события в нескольких битрейтах одновременно, в этом случае для каждого битрейта публикуется отдельный поток. В случае одновременного проведения нескольких трансляций из разных мест каждый поток публикуется отдельно.
После начальной конфигурации вам будет предоставлен URL страницы с тестовым плеером, на которой можно будет оценить раздачу потока через сеть CDN.
Требования к кодированию потока
Публикуемый поток должен удовлетворять следующим требованиям:
- видеокодек – H.264;
- аудиокодек – AAC или MP3.
В настройках H.264 рекомендуется выставить следующие параметры для ключевых кадров (key frames):
- фиксированный интервал между key frames;
- вставка key frame раз в 1-2 секунды.
Если предполагается просмотр трансляции на устройствах iPhone первых трёх моделей, то к кодированию потока предъявляются более жёсткие требования:
- Видеокодек – H.264 Baseline profile, level 3.0; требования к параметрам key frames те же.
- Аудиокодек: AAC; MP3, sample rate 44100.
Налагаемые ограничения связаны с недостаточной процессорной мощностью iPhone первых трёх моделей. Начиная с модели iPhone 4 указанных ограничений нет.
Способы доставки потока
Возможные способы доставки потока в сеть CDNvideo:
- RTMP-publish
- RTMP-pull
- RTSP-publish
- RTSP-pull
- MPEG_TS-publish
Ниже приведены описания каждого из перечисленных способов.
RTMP-publish
Способ может быть использован, если кодер поддерживает публикацию потока по протоколу RTMP (например Adobe FMLE, Apple QuickTime Broadcaster, ffmpeg). Для публикации выделяются два URL (основной и резервный) вида:
rtmp://01.domain.probro.ru:port/domain-publish rtmp://02.domain.probro.ru:port/domain-publish
Резервный URL следует использовать только при наличии достаточной полосы пропускания. Также выделяется пара Login/Password (запрашивается при подключении к серверу публикации).
Рекомендованные настройки в случае использования ПО Adobe FMLE (для других кодеров аналогично):
- Format: H.264
- Frame Rate: 30 fps
- Input Size: 640×480
- Bit Rate: 700 Kbps
- Output Size: 640×480
- Audio: 64k AAC mono 44100 Hz
В случае трансляции одного события в нескольких битрейтах одновременно на вкладке “Encoding Options” можно создать до 3-х потоков, указав для каждого битрейт и выходное разрешение. Имена потоков произвольные, указываются в строке “Stream:” через точку с запятой:
С системными требованиями к Adobe FMLE можно ознакомиться по ссылке:
RTMP-pull
Способ может быть использован, если существует готовый RTMP-поток (origin). Необходимо предоставить URL потока вида:
rtmp://origin.server/app/stream
Можно указать два URL – основной и резервный. Сервера CDN будут настроены на забор потока и ретрансляцию.
RTSP-publish
Способ может быть использован, если кодер поддерживает публикацию потока по протоколу RTSP (например Apple QuickTime Broadcaster). Для публикации выделяются два URL (основной и резервный) вида:
rtsp://01.domain.probro.ru:PORT/domain-publish
rtsp://02.domain.probro.ru:PORT/domain-publish
Резервный URL следует использовать только при наличии достаточной полосы пропускания. Также выделяется пара Login/Password (запрашивается при подключении к серверу публикации). Имя потока может быть любым.
RTSP-pull
Способ может быть использован, если кодирующее устройство (обычно это IP-камера) поддерживает раздачу потоков по протоколу RTSP. Предварительно должны быть выполнены следующие условия:
- доступность кодирующего устройства по постоянному публичному IP-адресу;
- на кодирующем устройстве должен быть доступен для входящих соединений порт 554/tcp.
Для конфигурирования необходимо предоставить следующую информацию:
- URL RTSP-источника;
- название потока, например cam1.stream
Пример URL RTSP-источника для камеры Axis:
rtsp://login:secret@10.1.1.1:554/axis-media/media.amp
где пара login:secret – это, соответственно, логин и пароль для доступа к камере. В URL должен использоваться публичный IP-адрес кодирующего устройства.
Сервера публикации CDN будут настроены на забор потока по заданному URL.
MPEG_TS-publish
Способ используется для публикации RTP-потока в формате MPEG_TS. Необходимо предоставить следующую информацию:
- IP-адрес кодирующего устройства;
- количество публикуемых потоков ( например, «2»);
- название каждого потока, (например, «stream1», «stream2»).
Для публикации выделяются адреса двух серверов (основной и резервный) и каждому по-току назначается отдельный UDP-порт. Например:
- поток stream1, UDP-порт 1111, IP: 1.2.3.4 primary, 2.3.4.5 backup
- поток stream2, UDP-порт 2222, IP: 1.2.3.4 primary, 2.3.4.5 backup
Кодирующее устройство должно быть настроено на отправку потока (потоков) по указан-ным адресам и портам. Потоки будут раздаваться под заданными именами.
Вещание конечным пользователям
Для вещания конечным пользователям используются следующие протоколы:
- RTMP/RTMPT
- RTSP
- HTTP Dynamic Streaming (Adobe)
- HTTP Live Streaming (Apple)
- Smooth Streaming (Microsoft)
В случае проблем с трансляцией потока по протоколу RTMP в сторону пользователей, находящихся в корпоративных сетях с жёсткими политиками безопасности, рекомендуется рассмотреть следующие варианты:
- Вещание по протоколу RTMP, при этом на сервере раздачи задействован порт tcp/80, обычно используемый веб-серверами. Передаются стандартные RTMP-пакеты. Способ позволяет обойти большинство фильтров.
- Вещание по протоколу RTMPT (RTMP tunneling over HTTP). Трафик RTMP инкапсулируется в HTTP, сервер раздачи отдаёт пакеты с порта tcp/80. С точки зрения межсетевого экрана такие пакеты ничем не отличаются от стандартного веб-трафика.
Порядок действий при подключении
- Для размещения ссылок на трансляцию вам будет выделен домен в зоне ответственности CDN вида customer.probro.ru. Для этого домена вы можете создать псевдоним (CNAME) в своей зоне ответственности DNS вида cdn.customer.ru (опционально).
- Оценить максимальное количество одновременных зрителей и предполагаемый средний битрейт и сообщить эти параметры нам для резервирования полосы пропускания (если предполагаемое максимальное количество одновременных зрителей превышает 1000).
- Выбрать способ публикации потока и сообщить нам. В зависимости от выбранного способа мы запросим или предоставим необходимую информацию.
- Настроить кодирующее устройство.
- Проверить показ трансляции на странице с тестовым плеером (URL страницы мы предоставим).
- Настроить плеер, размещаемый на вашем сайте, на отображение потоков через сеть CDN.