Comments 41
Вы могли бы сравнить производительность вашей системы транскодирования с ffmpeg+libx264? Интересует режим live потока, условно непрерывного.
По поводу в целом сравнения с ffmpeg у нас есть вот такая статья. Общий вывод — у нас производительность как минимум не хуже.
А можно прямой и честный ответ, вы под капотом libav/ffmpeg используете? Я полистал разные странички на вашем сайте, в том числе про лицензии, и у меня сложилось такое впечатление.
Мы используем код ffmpeg для отдельных операций, в частности для фильтров, но он составляет лишь малую часть кодовой базы транскодера. Основные преимущества нашего решения связаны именно с нашими наработками. Вот здесь мы описываем, чем такой подход выгоднее.
В исходниках же самого сервера Nimble Streamer нет кода ffmpeg.
В исходниках же самого сервера Nimble Streamer нет кода ffmpeg.
работа с nvenc идет без ffmpeg-а. Сам ffmpeg используется в фильтрах между декодером и енкодером если он нужен. Работа с libx264 тоже происходит напрямую.
Причин тому несколько. Одна из них в том, чтобы явно контролировать вставку ключевых кадров из нашего кода. Вторая в том, чтобы иметь возможность контролировать/кешировать nvenc контексы, чего с ffmpeg сделать нельзя.
Причин тому несколько. Одна из них в том, чтобы явно контролировать вставку ключевых кадров из нашего кода. Вторая в том, чтобы иметь возможность контролировать/кешировать nvenc контексы, чего с ffmpeg сделать нельзя.
Декодер h264 сами писали, используете от NVIDIA, из libavcodec или ещё какой нибудь? Если от NVIDIA, то как боретесь с, скажем так, неидеальным исходником, в котором встречаются некорректные операции? А демуксеры свои?
Аппаратный кодек для Nvidia работает на fixed function железке в составе GPU и/или задействует ядра CUDA? Ваши фильты по обработке пытались реализовать на CUDA?
На сайте NVidia пишут, что это делается не на CUDA.
По фильтрам — часть из них при желании можно перевести на GPU в качестве опции, но пока это никто не запрашивал.
По фильтрам — часть из них при желании можно перевести на GPU в качестве опции, но пока это никто не запрашивал.
Снизит нагрузку на CPU и шину памяти между CPU и RAM, особенно если делать фильтрацию сразу в памяти GPU, до копирования кадра в RAM.
Я далек от технологий потокового видео, поэтому вопрос: вашу систему можно использовать для стриминга на площадках?
О каких площадках идёт речь?
Ну тот же твич или ютуб. Просто мой комп явно слабоват для х264, приходится пользоваться NVENC или как там ее. Но качество не очень хорошее.
Да, если вы закодируете поток, то с помощью Нимбла сможете его опубликовать по RTMP на эти сервисы.
А какие будут в итоге преимущества, если для чайника на пальцах?
Не совсем понял — преимущество чего перед чем?
Нимбла перед OBS. Или все одно и без разницы?
off после бадабума осторожно смотрю на ускорение видеокартой. Только наблюдаю. Опыт был такой же —
https://geektimes.ru/post/76462/
при сравнении результатов кодирования на видео и на процессоре были заметны явные дефекты при обработке видеокартой.
Хотя для стрима они не существенны.
/off
https://geektimes.ru/post/76462/
Все недостатки «бадабума» были налицо: «убитые» цвета, общая мутность картинки, подергивания в динамичных сценах.
при сравнении результатов кодирования на видео и на процессоре были заметны явные дефекты при обработке видеокартой.
Хотя для стрима они не существенны.
/off
Ничего не могу сказать про кодирование VOD, да ещё неизвестными мне утилитами, да ещё с непонятными настройками энкодера. Но по ходу наших тестов мы не увидели дефектов, хотя специально отслеживали, и особенно тщательно отсматривали на пиковых нагрузках.
да ещё неизвестными мне утилитами
Видимо около 2009-го года Вы не интересовались темой конвертирования видео с использованием видеокарты. В свое время утилита произвела эффект бомбы, в ответ АТИ выпустила свою. Обе как оказалось «упрощали» себе задачу и часть информации из видео отбрасывали.
Badaboom — одно из первых приложений, которое начало использовать при кодировании видео аппаратные средства видеокарт NVIDIA с поддержкой CUDA.
NVIDIA в своём рекламном ролике хочет напомнить о том, что с помощью Badaboom и ускорителя GeForce с поддержкой CUDA можно кодировать видео для iPhone в 20 раз быстрее, чем с помощью процессора и стандартного ПО iTunes.
Конечно, для того, чтобы достичь такого огромного прироста нужно сравнивать хорошую видеокарту класса GTX 260 со средним 2-ядерным процессором. В случае более сравнения более медленного ускорителя с мощным 4-ядерным процессором разница будет не столь впечатляющей, хотя всё равно останется ощутимой.
Я могу отвечать только за то, что сделано конкретно нами :) Проблемы других приложений я не могу комментировать. Конкретно у нас артефактов иображения не было, мы это проверяли.
Артефакты не в том смысле как это понимают обычно, а в отличиях от оригинала, При тщательно сравнении результатов я увидел отбрасывание младших бит. Неприемлемо если речь о памятных домашних видеозаписях. Но хорошее решение для публикации онлайн — теряется шум, изображение становится «гладким», уменьшается битрейт.
На днях на reddit прочитал пост одного гражданина:
при NVENC по сравнению с x264 либо ухудшается качество (при сравнивом битрейте), либо надо задрать битрейт, чтобы получить на выходе сравнимое качество.
Самому интересно узнать как и насколько различается кодирование аппаратное/программное. Жаль видеокарты подходящей нет.
при NVENC по сравнению с x264 либо ухудшается качество (при сравнивом битрейте), либо надо задрать битрейт, чтобы получить на выходе сравнимое качество.
Самому интересно узнать как и насколько различается кодирование аппаратное/программное. Жаль видеокарты подходящей нет.
При нашем тестировании подобного эффекта не обнаружилось.
Нужно разбираться в конкретном случае с конкретным чипом и ещё лучше конкретной картой, смотреть настройки. Ну и пробовать на картах разного уровня, чтобы понять, что подойдёт для конкретной задачи.
Нужно разбираться в конкретном случае с конкретным чипом и ещё лучше конкретной картой, смотреть настройки. Ну и пробовать на картах разного уровня, чтобы понять, что подойдёт для конкретной задачи.
Я проводил эксперименты с кодированием давно, где-то после 2010. И мое мнение совпадает с озвученным в комментариях к статье https://habrahabr.ru/post/262309/
— влияет исходник. Если это сырое видео (я экспериментировал с ускорением пережатия miniDV), то были потери которые для меня не приемлемы. Хоть и miniDV это и сжатие, но относительно низкое и я видел потери.
А если же пережимать фильмы, ролики, то тут как комментарии erlyvideo
В этих видео уже все «потеряно» лишнее.
— влияет исходник. Если это сырое видео (я экспериментировал с ускорением пережатия miniDV), то были потери которые для меня не приемлемы. Хоть и miniDV это и сжатие, но относительно низкое и я видел потери.
А если же пережимать фильмы, ролики, то тут как комментарии erlyvideo
Сырое видео очень мало распространяется и поэтому для интернета интересны прежде всего вопросы пережатия из одних сжатых форматов в другие.
В этих видео уже все «потеряно» лишнее.
А если всё то же самое, но не на заоблачно дорогом «профессиональном» ускорителе прошлого поколения, а на обычной потребительской видеокарте?
Насколько помню, у потребительских десктопных карт есть ограничение по числу потоков на энкодинг видео.
А мне нужен только один поток.
Но для наглядности мне надо преобразовать FullHD (1920*1080) в последовательность кадров JPEG,
А каждый кадр JPEG в кадр BMP 1920*1080
Затем каждый кадр BMP 1920*1080 преобразовать в кадр ВМР 1440*1080, а его в кадр ВМР 720*480
И все кадры вывести на экран
Но для наглядности мне надо преобразовать FullHD (1920*1080) в последовательность кадров JPEG,
А каждый кадр JPEG в кадр BMP 1920*1080
Затем каждый кадр BMP 1920*1080 преобразовать в кадр ВМР 1440*1080, а его в кадр ВМР 720*480
И все кадры вывести на экран
В тестировании на CPU использовался ли Intel Quick Sync Video?
Нет, не использовался. У нас есть его поддержка в транскодере, но в данном случае мы проверяли работу именно GPU.
В таком случае, не получится, что при использовании Quick Sync на CPU будет большее количество потоков?
Если правильно помню, у коллег, занимающихся потоковым видео, Quick Sync показывал себя даже лучше, чем GPU. Правда, это были карточки не уровня Tesla.
Если правильно помню, у коллег, занимающихся потоковым видео, Quick Sync показывал себя даже лучше, чем GPU. Правда, это были карточки не уровня Tesla.
Я вполне допускаю, что QS покажет себя очень достойно. Но как показала практика, всё нужно тщательно тестировать. Как видите, даже на топовом GPU мы натолкнулись на ограничения непонятного для нас свойства. С чем можно столкнуться у QS на подобных же тестах — я лично не могу сказать. Надо проверять и только тогда делать выводы.
Верно подмечено. Quicksync отличная вещь, но встречается только на desktop-ах и некоторых серверных процессорах E3. На практике мы пока работали только с quicksync на десктопах.
Если мы говорим про quicksync и подразумеваем desktop, то самый на мой взгляд выгодный вариант такой:
-Вставляем nvidia GTX. Ограничений по колличеству сессий на декодинг нет. Ограничение на 2 одновременные сессии енкодинга.
-Весь декодинг делаем на GTX.
-Весь енкодинг делаем на quicksync. Quicksync умеет создавать софтовые енкодинговые сессии когда кончились хардварные так что грузим процессор по полной.
-Если есть куда используем 2 енкодинговые сессии, которые поддерживает GTX.
И дешево и производительно получается.
Если мы говорим про quicksync и подразумеваем desktop, то самый на мой взгляд выгодный вариант такой:
-Вставляем nvidia GTX. Ограничений по колличеству сессий на декодинг нет. Ограничение на 2 одновременные сессии енкодинга.
-Весь декодинг делаем на GTX.
-Весь енкодинг делаем на quicksync. Quicksync умеет создавать софтовые енкодинговые сессии когда кончились хардварные так что грузим процессор по полной.
-Если есть куда используем 2 енкодинговые сессии, которые поддерживает GTX.
И дешево и производительно получается.
При кодировании видео обычно используются операции с фиксированной и плавающей точкой одинарной точности (float). А с такими операциями прекрасно справится GTX 1080, которая будет значительно дешевле Tesla. Есть хостеры, которые предоставляют хостинг с «игровыми» видеокартами.
У таких карт производительность всё-таки значительно меньше и, кроме того, есть ограничение на число кодируемых потоков. Так что если нужно кодировать много — выгоднее будет взять «большую» карту.
По поводу хостеров. Во-первых, они ориентируются на разные классы задач, не только живое видео. Там и транскодинг VOD, и всякие приложения и сервисы с супер-фильтрами (типа Prism), и чисто математические задачи вроде обсчёта блокчейна.
Во-вторых, бывают случаи, когда с помощью поломаных драйверов обходится ограничение на одновременное число кодируемых потоков — так его можно немного увеличить. Мы слишком серьёзно относимся к вопросам лицензирования (вот здесь написано всё по этому поводу), чтобы воспринимать всерьёз такой подход.
По поводу хостеров. Во-первых, они ориентируются на разные классы задач, не только живое видео. Там и транскодинг VOD, и всякие приложения и сервисы с супер-фильтрами (типа Prism), и чисто математические задачи вроде обсчёта блокчейна.
Во-вторых, бывают случаи, когда с помощью поломаных драйверов обходится ограничение на одновременное число кодируемых потоков — так его можно немного увеличить. Мы слишком серьёзно относимся к вопросам лицензирования (вот здесь написано всё по этому поводу), чтобы воспринимать всерьёз такой подход.
Sign up to leave a comment.
Стресс-тест GPU NVidia на транскодинге живых потоков