Как стать автором
Обновить

Энкодинг многопоточного видео на профессиональном GPU: растрата ресурсов или возможность для серверов «не Intel»?

Время на прочтение8 мин
Количество просмотров6.8K
Всего голосов 12: ↑11 и ↓1+16
Комментарии15

Комментарии 15

Хотелось бы еще увидеть сравнение метрик компрессированного видео (PSNR/SSIM) в зависимости от того, чем производилось кодирование. По опыту использовать аппаратное ускорение оправданно для live-потоков ввиду его скорости. Для VoD лучше подходит CPU ввиду того, что торопиться некуда и есть время для принятия кодером более оптимальных стратегий сжатия, влияющих существенным образом на качество картинки. К сожалению пока все общедоступные механизмы ускорения до сих уступают CPU по визуальному восприятию.

Видел такое мнение про аппаратное ускорение, оно да, качеством заметно хуже при равном битрейте, но можно битрейт выставить повыше и в итоге 1ТБ видео файлов можно пережать за адекватное время, чем пытаться это делать на CPU.

Это как кодек SVT-AV1, он сильно ускоряет кодирование в av1, но битрейт выше придется ставить.

Хорошо, когда битрейт можно повыше выставить, перекодируя свою личную коллекцию видеоматериалов.

Нюансы начинаются там, где нужно с приемлемым качеством затранскодить какой-нибудь спортивный Live HD телеканал так, чтобы он еще пролез у ADSL-абонента (да-да, такие еще есть). И тут в игру вступают взаимоисключающие вещи: потолок битрейта 6Mbps CBR (из которых еще может быть две аудиодорожки в MPEG1L2@128kbps и чуть стаффинга), кодек H.264 (не все STB еще умеют в H.265, не говоря о AV1), и чтобы это выглядело хоть как-то прилично, а не игрой квадратных муравьёв в футбол.

да здесь же прям вывод

на cpu: bitrate=3007.9kbits/s
на gpu: bitrate=2027.1kbits/s
учитывая, что хардварный кодек даже на сравнимых q даёт обычно гораздо более худшее качество, то при на треть меньшем битрейте выхлоп тут можно даже не сравнивать

Интересно в деньгах померять. Сколько потоков вытянут зионы 2678, стоимостью в три копейки.

Согласен. Самые интересные метрики это стоимость обработки одного потока на конкретном железе (руб/поток) и потребляемая мощность на поток (Вт/поток).

старые Xeon не очень вытянут, там нет видеоядра где происходит вся магия и они тормозные отнсительно современных камней и много потребляют электричества, 2-3 потока и все.

На современных померять можно просто, по калькулятору на https://hostkey.ru/gpu-dedicated-servers/ :

машина с A4000 самая простая - 22000р, 12 потоков - 1800р на поток в месяц.

машина с A5000 самая простая - 31000р, 14 потоков - 2214р/поток

сервер на i9-9900K самый простой с QuickSync (QSV) - 5000-6000р, 11 потоков, 450р на поток. Сервера для такого надо собирать на матерях без удаленного управления, что мы умеем.

а почему в заголовке сервера? у intel на xeon scalable же тоже нет видеокодирования

ну как много. xeon w официально считаются процессорами для рабочих станций.
остаётся один xeon e, который по сути является небольшим тюнингом десктопного процессора: двухканальный контроллер памяти, относительно небольшое число ядер, отсутствие поддержки многосокетных конфигураций,…

Думаю математика будет 4 современных ядра процессора на HD поток если без графического ядра. Машина на 20 ядер за тысячи 3 евро потянет 5 потоков, а простой и не совсем свежий i9-9900k за 600 евро со всем вместе и QSV потянет 14 потоков. Мы это рассмотрим в дальнейших публикациях.

Аппаратное кодирование интеловское очень хорошее было, когда я его смотрел. С ним надо сравнивать

Это уже готово, будет статья про это в ближайшее время

Ребят, кто-нибудь сможет пояснить? Как, быстро производить рендеринг видео на сайте? То есть, к примеру на сайте есть форма для загрузки изображений, текста и т.п. И далее эти данные подгружаются в видео, которое генерируется. Соответственно вопрос в том, как это делать максимально быстро? Это нужно несколько серверов использовать, чтобы потоки разбивались в зависимости от нагрузки (например, чтобы одно видео генерировалось на одном сервере, а второе видео в этот момент на другом) ? И какие сервера нужны? CPU или GPU?

Я увы не профессионал, но в теории там декодинг + рендер с эффектами + кодинг и опять же в теории GPU дадут лучший результат (у них заявлен до 8 раз кодировщик от реалтайма и до 10 раз декодинг), но вполне возможно затык с самим рендером и тот же CPU с QuiickSync и большим числом потоков будет работать одинаково по скорости :( и выйдет дешевле и лучше. Надо тестировать. Ну и на разрешениях выше 2K мне кажется придется все равно ставить одну машину на один поток.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий