Владимир Дулепов: Примеры кодирования в решениях «СофтЛаб-НСК»

Доклад Владимира Дулепова, ведущего разработчика «СофтЛаб-НСК»: «Примеры кодирования в решениях «СофтЛаб-НСК», на Online круглом столе «Broadcasting 2021. Системы компрессии видеосигналов» 13 июля 2021 года.

Тимур Кулгарин, технический директор «СТС Медиа»: Передаю слово нашему следующему участнику, представителю другой очень уважаемой отечественной компании -разработчика ПО и устройств, применяемых на телевидении и не только. Владимир Дулепов, ведущий разработчик «СофтЛаб-НСК».

Владимир Дулепов: В отличие от наших коллег из Elecard мы не являемся гуру по разработке именно компрессоров. Мы, скорее, интегрируем другие решения, которые изначально были предназначены для нужд малых региональных телекомпаний. То есть поначалу у нас были вообще только платы ввода/вывода, сначала аналоговые SD-видео, затем SDI-HD. Теперь у нас есть вся линейка плат захвата и вывода вплоть до 12G-SDI, 4K. Все наши платы собственной разработки и производства.

Представлю примерную географию наших клиентов. Сейчас это более 65 стран. У нас более 50 дилеров практически по всему миру. В основном мы предоставляем решения для автоматизации и телевещания. Это программно-аппаратные комплексы, то есть плейаут-серверы, в которых установлены наши платы ввода/вывода, если они необходимы. Поскольку в последние годы необходимость в сигналах SDI отпадает, у нас есть чисто программные решения для приема и передачи IP-потоков, в которых как раз активно используется компрессия видеосигнала.

Кратко перечислю основные типы наших продуктов. Уже 30 лет у нас существуют плейаут-сервера, в том числе для врезки региональной рекламы и передач, брендирования телеканалов, то есть показ различной графики и наложение графики на проходящее видео, вещание со сдвигом по времени. Также у нас есть решения для живого ТВ-производства в студии, виртуальные студии, программный видеомикшер со встроенной 3D-виртуальной студией. Для прямого эфира имеется система замедленных видеоповторов, многоканальные серверы записи с замедленным повтором, серверы для показа спортивной графики в прямом эфире. Есть решения для видеосудейства, например, в хоккее, а также серверы многоканальной записи. Во всех этих решениях в какой-то степени используется компрессия видео. Когда-то видео компрессировалось как чисто программное сжатие в виде Motion JPEG; в последние годы это MPEG-2, AVC и HEVC. У нас есть различные классы кодеров, которые встроены в наши решения: программный кодер MainConcept MPEG-2 и AVC. Также мы активно используем кодирование с аппаратным ускорением, когда на видеокарту встроен процессор Intel и Nvidia. Сейчас это становится более популярным, потому что позволяет строить решения с большим количеством кодируемых потоков, при этом практически не нагружая центральный процессор. Это кодированное видео можно выдавать в различные транспортные среды: в IP, в АSI, что зависит от поставленной задачи. Важно, что у нас есть уже несколько тысяч клиентов по всему миру, которые привыкли к пользовательскому интерфейсу плейаут-серверов. Мы разработали их еще 30 лет назад, и нашим заказчикам не приходится переучиваться при изменении среды, в которой производится вещание. Если они когда-то давно привыкли вещать аналоговое SD-видео, то они сейчас с точки зрения пользователя точно так же работают при вещании в IP, цифрового телевидения, кабельного телевидения и так далее.

Как я уже говорил, мы не являемся разработчиками кодеров, поэтому мы решили показать типичные случаи именно реализованных задач с использованием различных кодеров.

На удивление еще остаются востребованными решения для кодирования SD MPEG 2 чисто на процессоре без поддержки Intel Quick Sync. Так на процессоре Intel Core i7-7700 можно закодировать до 9 каналов, а на 8700 – до 16 каналов. Кодирование SD в AVC тоже только на процессоре без поддержки Intel Quick Sync чуть медленнее. На Intel Core i7-7700 можно до 8 каналов, а на 8700 – до 12 каналов. Чем новее процессор, тем выше количество частот и ядер, поэтому количество кодируемых каналов только увеличивается. Также можно кодировать на встроенной в процессор графике. Комбинирование кодирования на графических ускорителях помогает решать задачи оформления, например, телевизионного эфира, потому что чисто кодирование видео решает только часть задач. Обычно брендирование телеканалов или наложение графики требует нагрузки еще и на центральный процессор. Соответственно, многослойное наложение графики делается средствами центрального процессора, а собственно кодирование делается через графический ускоритель. Все наши решения рассчитаны под круглосуточное вещание, поэтому все примеры приведены в ситуации, когда машина достаточно серьезно нагружена, но вещание происходит абсолютно без сбоев, без потерь кадров и так далее.

Также в последние годы мы активно используем кодирование на видеокартах Nvidia. Чем они хороши? В среднем у них возможности по кодированию выше, чем у графики, встроенной в процессоры Intel. Кроме того, там есть отдельные операционные блоки, которые независимо работают на кодирование, декодирование, и, что самое главное, показ собственной графики на десктопе никак не связан с этим операционным блоком, поэтому надежность работы таких решений очень высокая.

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

Мы проводили различные эксперименты со сложными случаями кодирования. Например, мы собрали машину на процессоре 8700К, поставили туда карту NV-P2000. В одной такой машине удавалось кодировать 20 каналов разрешения SDAVC, 9-10 каналов HDAVC, три канала HD HEVC и один канал UHD HEVC.

Как я уже говорил, у нас есть решения для самых разных нужд телевещателей, например сервер многоканальной записи. Такой сервер используется для многокамерной съемки сериалов. Для того чтобы экономить дисковый архив, выгоднее использовать сжатие в H264, но для того, чтобы много таких каналов записывать в одной машине, приходится использовать аппаратные ускорители. В последнее время мы продали несколько серверов, где с помощью наших плат захвата записывается 16 каналов 1080P50; каждый канал сжимается в AVC 15Мб/с, ввод с помощью 4-х плат FD788, кодирование на двух платах NVidiaRTX-4000. Поскольку еще требуется процессорная мощность для передачи данных по шинам, мы тестировали это на достаточно мощной машине на базе процессора AMD EPYC, и все успешно работает.

Также у нас есть решение Goalkeeper/Referee – это система замедленных повторов для спорта, система видеосудейства. Подкласс этих устройств – видеорегистраторы для Центра подготовки космонавтов. Там требуется записывать тренировки космонавтов в тренажерах и хранить большое количество тренировок длительностью до 8-10 часов. Чтобы хранить такие большие объемы данных, там также установлена видеокарта Nvidia Quadro, чтобы много часов записи многоканального видео можно было делать в одной машине.

Есть еще один класс наших решений, в которых на входе/выходе исключительно IP-потоки. То есть принимаются IP-потоки, они декодируются, либо накладывается графика, либо врезается реклама, далее они перекодируются, из них формируется новый транспортный поток и выдается снова в IP. Ряд наших клиентов предпочитают использовать такие решения в облаке. Они арендуют, например, Amazon Elastic Compute Cloud, и запускают там плейаут-каналы с использованием нашего ПО. Существует возможность использовать мощности графических ускорителей, которые установлены в этих серверах, и клиентам удобнее работать именно там.

Также мы активно используем решения, которые работают с врезкой без полного перекодирования, то есть это врезка по меткам SCTE-35. Есть также ряд клиентов, которым необходимо было организовать региональную ретрансляцию с головной станции, они принимали с декодера SDI- поток с метками SCTE-104, с помощью нашего решения автоматически преобразовывали транспортный поток с автоматическим преобразованием этих меток в SCTE-35.

Вообще у нас есть очень много решений, которые родились не на ровном месте, а по запросам наших многочисленных клиентов. Мы всегда открыты к диалогу, рады помочь решать возникающие задачи. Даже если прямо сейчас у нас нет готового решения, всегда можно к нам обратиться, и мы либо сможем преобразовать существующее решение в то, что нужно, либо разработаем то, что у нас еще не реализовано.

[pdf id=15680]

Тимур Кулгарин: Вы сказали, что у вас практически все варианты SDI, включая 12G. Что еще вы можете принимать на входе?

Владимир Дулепов: Как я уже говорил, мы работаем с собственными платами захвата. Когда-то это были аналоговые платы, и, как ни странно, они до сих пор востребованы, например, в Индонезии. В основном, конечно, это SDI либо IP-потоки. Практически все возможные IP-стримы у нас можно и принять, и сформировать на выход. Если вы задавали вопрос про SDI over IP, то пока у нас таких решений нет. Основные наши потребности рассчитаны на решения нужд российского рынка и внутреннего вещания, а не производство контента. Для контента у нас есть решения, но пока только в некоторых областях. Конечно, мы всегда смотрим в будущее и пытаемся понять потребности клиентов. Для этого мы принимаем участие во всех крупных ежегодных выставках, как российских, так и зарубежных, чтобы представлять, что людям нужно и какие тренды существуют в ближайшее время.

Тимур Кулгарин: Как вы оцениваете перспективы SRT и RIST? Поддерживаете ли вы уже эти протоколы?

Владимир Дулепов: SRT мы поддерживаем и на входе, и на выходе. Я работаю не в отделе продаж, поэтому мне сложно оценить их объемы. SRT мы реализовали по запросам клиентов, потому что некоторым региональным телекомпаниям это оказалось удобно, просто чтобы организовать доставку «точка-точка», например, от одной студии до другой. HLS тоже удобен, он очень просто реализуется, но для некоторых людей действительно критична малая задержка. Вообще у нас обычно так: если человек сам не уверен, какой вариант ему доступен, мы можем предоставить свое решение для бесплатного тестирования с временной лицензией, например, на три месяца. Более того, тем, кто не уверен, что у них заработает какой-то конкретный способ передачи сигналов, мы рекомендуем не покупать сразу, а сначала попробовать, чтобы убедиться в надежности решения конкретно на его площадке.

Режиссер эфира: Какие самые мощные видеокарты Nvidia вы тестировали на своих сборках и тестировали ли вы новые карты серии А6000?

Владимир Дулепов: Самая мощная видеокарта, с которой нам приходилось работать, – Quadro Р5000. Она дорогая, но позволяет в реальном времени сжимать 11 потоков видео 3GSDI, то есть 1080Р50. С более мощной видеокартой нам работать не приходилось. Эта видеокарта, как и Р2000, в прошлом году снята с производства, поэтому у нас появился вопрос, какие видеокарты ставить дальше. Мы общались с разработчиками, нашими бывшими коллегами, которые работают в Nvidia. Про А6000 мы выяснили, что она, к сожалению, мощна не с точки зрения кодирования видео, а с точки зрения количества шейдерных блоков, то есть она крута для рендеринга 3D-графики.

Для кодирования видео в картах Nvidia используются чипы NVENC. Они отдельные от 3D-части, и А6000 здесь большого преимущества не даст, несмотря на высокую цену. По нашему текущему опыту, сейчас по соотношению «цена/мощность кодирования», самая лучшая карта – это QuadroRTX4000. Она кодирует девять потоков 3G-SDI 1080Р50 в H264, при этом в отличие от Quadro Р5000 стоит гораздо меньше. Она занимает по толщине всего один слот и в целом оптимальна. Более того, мы сначала по ошибке приобрели карту RTX5000, и оказалось, что она по кодированию, по количеству блоков NVENC точно такая же и ничем не лучше. По 3D-части она более мощная, но нам это было не нужно. Также она занимает два слота и дороже стоит, так что оказалась для нас хуже.

Из совсем дорогих видеокарт у Nvidia есть специальные карты, которые они, видимо, ставят как раз в вычислительные облака. Но про них очень туманная информация, ее можно получить только по запросу, нужно подписывать с ними NDA, даже их цена напрямую недоступна, поэтому сведений по ним у нас нет. Среди видеокарт, которые реально купить и которые стоят вменяемых денег, сейчас лучшая — это RTX4000. Про А6000 нам разработчик из Nvidia сказал, что в последнее время Nvidia количество блоков кода выпячивает как некое маркетинговое преимущество. На первый взгляд кажется, что она должна хорошо кодировать. На самом деле нет. Нужно смотреть именно чипы NVENC. Например, написано, что у нее один такой чип. Что это означает, какая у нее реальная мощность? Определить, к сожалению, невозможно. Поэтому те же RTX4000 и RTX5000 мы были вынуждены просто купить и протестировать. Quadro Р4000, более старая, тоже снятая с производства, по мощности кодирования такая же, как Р2000, то есть она способна кодировать примерно пять-шесть потоков 3GSDI. А Р5000 способна кодировать 11 потоков. Так что сейчас наиболее оптимальной является RTX4000. Если поставить четыре таких видеокарты в одну машину, можно кодировать 36 потоков 3GSDI, а если вам не нужно 1080Р50, а достаточно I50, то, соответственно, еще раза в два больше. Это очень хорошая по мощности карта, мы надеемся, что Nvidia подольше не будет снимать ее с производства.

Вопрос от компании «Медиа Проект»: Вы сказали, что развертываете свое решение в облаке, берете 2110, накладываете графику и 2110 отдаете. Какая задержка получается в данном случае?

Владимир Дулепов: Нет, 2110 мы не поддерживаем. В облаке наши клиенты принимают IP-стрим, то есть там нет железных каналов ввода/вывода, только IP-стрим на входе и IP-стрим на выходе.

«Медиа Проект»: Какая задержка при развертывании?

Владимир Дулепов: Я думаю, задержка составляет какие-то секунды. Если нужны точные сведения, то лучше вопрос задать нашей техподдержке.