При ретрансляции HLS-потоков в вещательные сети, такие как спутниковые, кабельные, наземные или UDP multicast, часто возникает проблема появления различных артефактов, таких как пикселизация, смещение звука и щелчки. Интересно, что при воспроизведении на ПК эти потоки работают хорошо. Часто инженеры возлагают вину на производителя головной станции, однако, чтобы понять суть проблемы, необходимо изучить особенности кодирования видео.
Кодирование видео - это процесс сжатия видеоданных для их эффективного хранения и передачи. Видеопотоки разбиваются на кадры:
Для обеспечения плавного воспроизведения и правильной синхронизации звука и видео в сетях вещания очень важно обеспечить доставку каждого кадра в определенный промежуток времени. Для достижения этой цели видеопотоки должны кодироваться с более высоким средним битрейтом для поддержания предсказуемого и равномерного битрейта. Баланс между размером GOP и качеством кодирования необходим для поддержания стабильного битрейта и достижения оптимального визуального качества видеопотоков, предназначенных для вещания.
В отличие от вещательных сетей, HLS (HTTP Live Streaming) более эффективно справляется с переменным битрейтом, поскольку данные передаются сегментами, содержащими несколько секунд видео (обычно 3 секунды и более). В результате HLS может работать с большими размерами GOP, обеспечивая лучшее качество видео при более низком среднем битрейте.
На графике видно, что поток, закодированный для HLS, имеет низкий средний битрейт - всего 2 Мбит/с, но при этом имеет пики, достигающие 6 Мбит/с.
Гибкость HLS не очень хорошо проявляется в сетях вещания, которые требуют постоянной и предсказуемой полосы пропускания для стабильной передачи и воспроизведения. Таким образом, при работе с потоками HLS и вещательными системами необходимо учитывать различия в требованиях к битрейту и соответствующим образом корректировать параметры кодирования для обеспечения стабильной передачи и воспроизведения.
Пиковые значения битрейта также могут создавать проблемы для UDP-вещания. Большинство потребительских устройств, таких как приставки (STB) и телевизоры, имеют ограниченный объем сетевого буфера для приема UDP-пакетов. Когда за короткое время поступает много пакетов из-за пиков битрейта, сетевой буфер устройства может оказаться переполненным, что приведет к потере пакетов.
Для потоков с умеренным отклонением битрейта можно включить функцию CBR (Constant Bitrate) в настройках вывода Astra. Эта функция помогает распределить большие ключевые кадры во времени и добавляет пустые пакеты TS для поддержания постоянного битрейта.
Однако для некоторых потоков может потребоваться транскодирование, чтобы адаптировать их для вещания. Для обеспечения лучшей совместимости с сетями вещания необходимо выполнить следующие настройки: