LINUX.ORG.RU

Конвертация видеофайлов

 , ,


1

2

Предисловие: есть небольшой видеосервис, на котором храняться записи лекций ВУЗа. Ранее сие было банальной файлопомойкой, но в прошлом году дошли руки и был реализован «свою ютуб с блэкджеком и павлинами» - лекции можно посмотреть, можно скачать, можно свой плей-лист сформировать. Ну в общем такое... Крутится все на обычном компе (i7, DDR3), на борту Debian.

Дабы все было однотипно и красиво мы начали кодировать видео в одинаковый формат (ffmpeg), что логично - и места меньше занимает и админить такое проще. Но вот тут возникла проблема - есть необходимость конвертнуть огромное количество видосов, человек писал лекции несколько лет.

Подскажите, есть ли смысл (понимаю что есть) прикупить видеокарту и кодировать ffmpeg с использованием GPU?

Какую из дешманских видеокарт лучше взять под такие задачи?

Перемещено hobbit из general

Ответ на: комментарий от Bubublik

Это не сторонний ресурс, это децентрализованный федеративный видеохостинг с открытым исходным кодом. Поднимаешь у себя сервер peertube - и твои видосы видит вся сеть (федерация)

alex1101
()

Огромное это какое? В какой формат конвертишь? Если H.264 и чел не писал лекции несколько лет 24/7/365 то можно и процом достаточно быстро сконвертить. Особенно если воспользоваться чем-то мощным и многоядерным.

А на пиртьюб реально посмотри

MrClon ★★★★★
()
Ответ на: комментарий от MrClon

Огромное это 611 файлов длительностью от 30 минут до полутора часа каждый. Форматы avi, mov. На выходе будет mp4, видео H.264 720p, звук aac 128k. FFMPEG с параметрами preset: slow, tune: film. Можно и процом, сейчас конвертит. Но хотелось бы попробовать GPU.

peertube не интересен, спасибо

Bubublik
() автор топика
Ответ на: комментарий от Bubublik

Недели за две межно сконвертить думаю. Если конверть не на своём компе, а на сервере, то как по мне норм. тут вопрос не сколько технический, сколько дело твоего личного вкуса

MrClon ★★★★★
()
Ответ на: комментарий от Bubublik

параметрами preset: slow, tune: film

Надеюсь ты проверил, что текст с этими настройками не шакалит. А то я видел у горе лекторов видеолекции с рассыпающимся текстом, который невозможно прочесть.

ox55ff ★★★★★
()

Подскажите, есть ли смысл (понимаю что есть) прикупить видеокарту и кодировать ffmpeg с использованием GPU?

Нет. Сколько там видео? Несколько терабайт? На veryslow пресете (это чтоб качество по-масимуму сохранить) терабайт за пару месяцев сконвертится, ты торопишься?

firkax ★★★★★
()

Какую из дешманских видеокарт лучше взять под такие задачи?

Разовую вычислительную задачу надо решать на том железе, что имеется. У меня так нетбук в сумме три дня перебирал кучу скачанных веб-страниц и скармливал их моей баш-лапше. И этот же нетбук до часа конвертировал 20-минутное видео в ffmpeg из FullHD в 1024×600, потому что масштабирование в реальном времени тормозило.

Если мощностей не хватает, ты их просишь или арендуешь.

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

Vidrele ★★
()
Ответ на: комментарий от Bubublik

Ну держи:

ffmpeg -threads 8 -hwaccel vaapi  -vaapi_device /dev/dri/renderD128 -i input.mp4  -c:v h264_vaapi -vf format=nv12,hwupload -vcodec h264_vaapi  -preset fast -c:a copy -bf 0 -profile:v 66 out.mp4

Сравнивай качество получаемого файла, время конвертации и его размер с исходными файлом.

В моем случае выйгрыша практически нет, так как размер увеличивается и качество падает по сравнению с CPU.

einhander ★★★★★
()
Последнее исправление: einhander (всего исправлений: 1)
Ответ на: комментарий от Bubublik

А нет ли разницы, что за GPU используется?

Разница есть, конечно и говорят достаточно сильная. Я пробовал на интеле и АМД. У АМД говорят не очень хорош кодек. GPU профессионального уровня скорее всего будет хорошо работать, но у меня его нет, проверить не могу.

einhander ★★★★★
()
Ответ на: комментарий от Bubublik

nvidia quadro 4000

Может лучше сразу GeForce 256 взять? Или имелась в виду всё-таки RTX, у которой ценник отнюдь не демократичный?

Кодируй на CPU, так и качество выше будет. У тебя же там не трансляция в реальном времени, быстрая кодировка не нужна. А аппаратные кодировщики только за этим и нужны.

rootree
()
Последнее исправление: rootree (всего исправлений: 1)
Ответ на: комментарий от rootree

))))))))

– Ребята, хочу автомобиль купить, не дорогой, посоветуйте.

– Может сразу мопед взять? Ездяй на троллейбусе, так душевней будет. Ты же не чиновник какой, тебе быстро ездить туда-сюда не нужно. А автомобили они только за этим и нужны. Воть!

Bubublik
() автор топика
Последнее исправление: Bubublik (всего исправлений: 1)
Ответ на: комментарий от rootree

Кодируй на CPU, так и качество выше будет. У тебя же там не трансляция в реальном времени, быстрая кодировка не нужна. А аппаратные кодировщики только за этим и нужны.

Ну кстати дело говоришь

MrClon ★★★★★
()

GPU кодирование быстрее, но иногда качество страдает, т.к. вместо double работает с float, но тут от реализации зависит конечно. Но у меня nvenc качество шакалил. Для стрмов на твиче пойдёт, а вот норм видосики я бы на проце обрабатывал если время есть.

peregrine ★★★★★
()
Ответ на: комментарий от Bubublik

пригляделась nvidia quadro 4000, особенно ценой.

Quadro P/T400 будет более чем достаточно, с *_cuvid и *_nvenc перекодирует раз в десять быстрее продолжительности видео.

Но лучше и качественнее что-нибудь из GTX с NVENC от 7 поколения.

yandrey
()

IMHO кодирование на GPU это не про скорость и производительность пакетного кодирования (ну разве что вместо ЦПУ что то смешное), это про «прямые трансляции» с кодированием в один проход. Основная фишка в том чтобы процесс с ЦПУ убрать на специально выделенный для этих задач сопроцессор, дабы «планировщик задач» не сильно вмешивался и поток в результате был бы равномерным no matter what.

Для кодирования «на качество», в несколько проходов, CPU будет и шустрее, и оптимальнее. Так как и параметры можно погибче подобрать, так чтобы и «камни» загрузить по максимуму, и итоговое качество соблюсти, и многопоточность задействовать, не обязательно в кодировании одного исходника, можно параллельно несколько видео обрабатывать например. Лишь бы ядер хватило.

Но я не «настоящий сварщик».

Jameson ★★★★★
()
Последнее исправление: Jameson (всего исправлений: 8)

Тут табличка сравнений есть.

While first-generation Maxwell GPUs had one NVENC engine per chip, certain variants of the second-generation Maxwell, Pascal and Volta GPUs have two/three NVENC engines per chip. This increases the aggregate encoder performance of the GPU.

mydibyje ★★★
()
Последнее исправление: mydibyje (всего исправлений: 1)

Какую из дешманских видеокарт лучше взять под такие задачи?

Даже у 3060 nvenc ядер всего что-то около 3-х или это количество конкурентных сессий… Правда, говорят, что они программно залочены и есть хитрые драйверы… Но это не точно.

А так, смысл есть конечно, прирост не на порядок, но в несколько раз.

Для ознакомления с вопросом https://docs.nvidia.com/video-technologies/video-codec-sdk/12.1/nvenc-application-note/index.html

Вот более точная ссылка на суппорт матрикс - https://developer.nvidia.com/video-encode-and-decode-gpu-support-matrix-new

vvn_black ★★★★★
()
Последнее исправление: vvn_black (всего исправлений: 2)

И так. Видеокарта GeForce GTX 1050 Ti. Как воткнуть драйвера - отдельный вопрос, лично мне пришлось повозиться, но может я просто тупил.

Жмем видос 2.7Gb 1920x1080 в 1280x720 h264, aac 128k, preset: slow, tune: film. Без видеокарты скорость кодирования на Core i7-2600 - до 2х, в среднем 1.4х

С использованием h264_nvenc средняя скорость кодирования 8.6х

На выходе качество видео визуально не отличается (монитор DELL U2719D). Размер файлов примерно одинаков +/- 100Мб.

Кодирование на GPU это не про скорость? Качество упадет? LOL

Всем спасибо!

Bubublik
() автор топика
Ответ на: комментарий от Bubublik

Кодирование на GPU это не про скорость? Качество упадет? LOL

Именно про скорость. Если нужно качество, то никаких nvenc, только обычный libx264 на CPU. Но и скорости там будут меньше 1x, как правило (в зависимости от настроек и желаемого качества, конечно).

На выходе качество видео визуально не отличается (монитор DELL U2719D).

Либо настолько высокий битрейт, что хватает и nvenc для «transparency», либо глазки плохо видят. На CPU можно заэнкодить с более низким битрейтом, и всё ещё «визуально не отличающимся» качеством.

CrX ★★★
()

если возьмешь карту 4xxx серии, то можно сделать сразу конвертацию в h264 и av1 на будущее.

Через 2-3 года поддержка у av1 будет почти повсеместная, а h264 — это конечно стандарт и единственный дефолтный кодек, но на fullhd и выше разница с av1 в размере видна.

Потом просто удалишь h264 через пару лет.

Записывать всё в mp4, конечно же, никакого дебильного онанизма под названием mkv, придуманного болванами, ничего не знающими про трансляцию видео.

max_lapshin ★★★★★
()