Skip to content

Подготовка DVB-совместимого CBR-потока для одного телеканала

Из любого поддерживаемого Flussonic источника Flussonic Media Server подготовит SPTS для передачи в DVB-среду, требующую жесткой упаковки видеосигнала в полосу с постоянным битрейтом. Для этого поток транскодируется на CPU и упаковывается в MPEG-TS с соблюдением требований стандарта ETSI TR 101 290.

Warning

Транскодирование на NVENC не позволяет добиться стабильности битрейта (CBR), достаточной для требований стандарта DVB. Мы предлагаем только кодирование на центральном процессоре (CPU).

Допустим, вам нужно из HLS-потока подготовить SPTS с разрешением Full HD и общим битрейтом 6 700 Кбит/с, в котором аудио PID занимает 192 Кбит/с, а видео — 6 100 Кбит/с. Здесь килобит — это 1000 бит, а не 1024. Вы можете настроить Flussonic Media Server через веб-интерфейс или конфигурационный файл.

В веб-интерфейсе

Шаг 1. Настройте транскодирование потока в CBR

1) Откройте настройки потока, нажав на имя потока на странице Streams.

2) Перейдите на вкладку Transcoder и нажмите Enable Transcoder.

3) В разделе Audio укажите битрейт аудиодорожки (Bitrate) — 192k и аудиокодек MPEG-2 Audio (Codec) — mp2a. Вы можете изменить битрейт дорожки при необходимости.

4) В разделе Video > Track 1 укажите:

  • GOP (GOP size) — 28 для 25 FPS. Это стандартная частота ключевых кадров. Рекомендуем оставить без изменений.
  • битрейт видеодорожки (Bitrate) — 6100k, вычисляемый по следующей формуле: 0.95 × (общий битрейт потока − 250). Можно изменить значение при необходимости.
  • высоту (Height) — 1920 и ширину (Width) — 1080 окна воспроизведения для плеера. Можно изменить при необходимости.
  • стратегию изменения размера кадра (Resize) — scale. Рекомендуем оставить без изменений.
  • скорость кодирования (Preset) — fast. Рекомендуем оставить без изменений.
  • размер буфера. В разделе Extended, введите ключ Keybufsize и его значение Value5805000. Размер буфера вычисляется по следующей формуле: 900 × (общий битрейт потока − 250). Можно изменить значение при необходимости.

По умолчанию Flussonic кодирует видео в H.264. Если вам нужно видео в MPEG-2 video, то явно укажите это в поле Codec, выбрав в выпадающем списке mp2v.

Flussonic сам добивает поток (stuffing) до нужного целевого битрейта.

5) Примените настройки, нажав Save.

SPTS CBR transcoder settings

Шаг 2. Отправьте поток в мультикаст-группу

1) В настройках потока перейдите на вкладку Output в раздел Push live video to certain URLs и укажите адрес мультикаст-группы следующим образом: udp://239.172.0.1:1234.

2) Перейдите в настройки отправляемого потока, нажав Options. Укажите верхнее пороговое значение битрейта видеодорожки, включая заголовки и инкапсуляцию (Video bitrate), и общий битрейт потока (TS Bitrate). Верхнее пороговое значение битрейта видеодорожки вычисляется так: общий битрейт потока − 250. Flussonic не будет превышать это значение.

3) Примените настройки, нажав Save:

SPTS CBR push udp settings

Шаг 3. Убедитесь, что всё работает

Для этого используйте специальную утилиту, например, DVB Inspector (см. Проверка в DVB Inspector) или любую программу, которая проверяет поток на соответствие стандарту ETSI TR 101 290.

В конфигурационном файле

1) В настройках потока укажите transcoder и настройте его следующим образом:

stream spts-cbr {
  input file://vod/bunny.mp4;
  transcoder gop=28 vb=6100k bufsize=5805000 preset=fast size=1920x1080:scale ab=192k acodec=mp2a;
}

, где:

  • gop=28 — размер GOP (Group Of Pictures) для 25 FPS (Frames Per Second). Это стандартная частота кейфреймов. Рекомендуем оставить без изменений.
  • vb=6100k — битрейт видеодорожки, вычисляемый по следующей формуле: 0.95 × (битрейт всего потока − 250). Можно изменить значение при необходимости.
  • bufsize=5805000 — размер буфера в битах, вычисляемый по следующей формуле: 900 × (битрейт всего потока − 250). Можно изменить значение при необходимости.
  • preset=fast — скорость кодирования. Рекомендуем оставить без изменений.
  • size=1920x1080:scale — размер окна воспроизведения для плеера, где scale — стратегия изменения размера кадра, при которой картинка вписывается в заданный размер без сохранения пропорций. Можно изменить значение размера окна 1920x1080 при необходимости. scale рекомендуем оставить без изменений.
  • ab=192k — битрейт аудиодорожки. Можно изменить значение при необходимости.
  • acodec=mp2a — аудиокодек MPEG-2 Audio.

По умолчанию Flussonic кодирует видео в H.264. Если вам нужно видео в MPEG-2 video, то явно укажите это: vcodec=mp2v.

Flussonic сам добивает поток (stuffing) до нужного целевого битрейта.

2) В настройках потока добавьте push и укажите адрес мультикаст-группы (udp://239.172.0.1:1234), общий битрейт потока (bitrate) и верхнее пороговое значение битрейта видеодорожки, включая заголовки и инкапсуляцию (vb): push udp://239.172.0.1:1234 bitrate=6700 vb=6450. Верхнее пороговое значение битрейта видеодорожки вычисляется по следующей формуле: общий битрейт потока − 250. Flussonic не будет превышать это значение.

3) Убедитесь, что всё работает. Для этого используйте специальную утилиту, например, DVB Inspector (см. Проверка в DVB Inspector) или любую программу, которая проверяет поток на соответствие стандарту ETSI TR 101 290.

Проверка качества выходного SPTS в DVB Inspector

1) Запишите отрезок потока длительностью пару минут с помощью следующей команды в терминале: /opt/flussonic/contrib/multicast_capture.erl udp://239.172.0.1:1234 spts-cbr-output.ts. Закончите запись, использовав сочетание клавиш Ctrl+C.

2) Скачайте получившийся отрезок spts-cbr-output.ts на локальный компьютер.

3) Проверьте записанный отрезок в DVB Inspector.

DVB Inspector SPTS CBR BitRate View

DVB Inspector SPTS CBR BitRate View bad ex

В результате вы получите SPTS с постоянным битрейтом (CBR), который можно передать:

  • в QAM-модулятор или скремблер для отправки в кабельную сеть,
  • в мультиплексор для подготовки MPTS.

Note

Значение по умолчанию шага замера в DVB Inspector (View > Filter > Steps) сглаживает битрейт отдельных PID при большой длительности отрезка. Это значит, что чем больше длительность отрезка записываемого потока, тем ровнее битрейт отдельных PID. Так, если вы запишете отрезок потока длительностью 10 минут и откроете его в DVB Inspector, то увидите идеальный график с ровными битрейтами отдельных PID. Если на этом же отрезке вы установите шаг замера равным 500, то увидите, что в битрейтах отдельных PID есть небольшие колебания. Такие небольшие колебания около одного Кбит/с не влияют на результат и такой поток всё ещё CBR.