Чи можна використовувати GPU для кодування h264?


13

Мені цікаво, чи можу я отримати кращу відеокарту, чи може вона прискорити кодування h264 на моїй машині за допомогою ручного гальма?

Якщо так, як я можу сказати, яка відеокарта підтримуватиме це?

Я знаю, що GPU може робити апаратне декодування h264, але не впевнений у кодуванні.


Пов'язане: Прискорене стиснення відео - будь-яким способом ви хочете мати для цього NVIDIA карту і готові витрачати гроші.
slhck

Ще одна пов’язана публікація в блозі: Кодуйте свої відео за допомогою свого GPU
slhck

Для кодування h.264 в ручному гальмі використовується програмний кодер x264 (відеолан) . Деякі відповіді нижче передбачають, що ручний гальмо використовує ffmpeg, який може використовувати x264 або hw (GPU). Хоча це старе (але все ще актуальне) питання, ймовірно, не задає питання "як зробити ручний гальмо швидше", а "як швидше зробити кодування h.264". Відповіді матимуть термін придатності (деякі з них вже минули); але наразі, якщо ви робите ML та / або пакетну обробку, можливо, вам доведеться відповідати реалізації вашим обладнанням
michael

fwiw, я вважаю цей коментар від ffmeg цікавим: "Апаратні кодери, як правило, генерують випуск значно нижчої якості, ніж хороші програмні кодери, такі як x264, але, як правило, швидші і не використовують багато ресурсів процесора. (Тобто, для створення потрібен більший бітрейт вихід з однаковою сприйнятливою якістю, або вони роблять вихід із меншою сприйнятливою якістю при тому ж бітрейті.) "
Майкл

Відповіді:


7

Використовуючи Handbrake, відповідь буде "ні". Handbrake є кодером h.264, призначений лише для процесора, хоча тепер він може використовувати OpenCL для масштабування відео та має деяку підтримку DXVA для декодування відео.

Питання, пов'язане з slhck, згадує MediaCoder , але для нього потрібна або відеокарта Nvidia, або процесор Intel з графічним ядром другого покоління.

Є кілька старих продуктів, які були застаріли, зокрема Badaboom та програмне забезпечення ATi Avivo.

Badaboom, який міг би використовувати графічні процесори Nvidia та Intel для прискорення процесу кодування, але зараз він закінчився, і не підтримує новіші відеокарти.

ATi мав власний кодер для відео, який раніше називався "Avivo" перед тим, як його об'єднати в пакет кодеків AMD, який включав AMD Video Converter, хоча він більше не доступний.


Тож я зараз використовую процесор AMD, це означає, що це марнотрата часу для мене? Чи може це бути будь-яка карта NVIDIA - о, вона повинна підтримувати CUDA?
пітер

Я знайшов це посилання, en.wikipedia.org/wiki/CUDA, що говорить про те, що досить багато NVIDIA-карт підтримують CUDA.
пітер

Я оновив свою відповідь посиланням на програмний пакет AMD, який може допомогти вам використовувати GPU для кодування відео, але для цього потрібна карта серії HD2000 або вище. Якщо у вас особливо потужний процесор, але бюджетна відеокарта, Handbrake може все-таки бути швидшим.
Мокубай

Badaboom закінчується після 18.08.2012.
HVS

2
Відповідь вище не / більше не правильна.
вчора

4

x264 тепер підтримує прискорення кодування OpenCL. Скільки прискорень ви отримаєте, залежатиме від продуктивності вашої відеокарти, на моїй GTS 450 я не отримую жодної, а при повільніших картках вона фактично сповільнює кодування. Кращі картки можуть допомогти. Все, що вам потрібно зробити - це додати --opencl до командного рядка x264. Я вважаю, що ручний гальмо використовує ті ж бібліотеки x264 і пропонує новіші прискорення OpenCL у новіших збірках.


Як слід використовувати прискорення кодування OpenCL?
Dr.jacky

2

https://trac.ffmpeg.org/wiki/HWAccelIntro

FFmpeg забезпечує підсистему апаратного прискорення.

Прискорення обладнання дозволяє використовувати конкретні пристрої (зазвичай графічну карту> або інші конкретні пристрої) для виконання мультимедійної обробки. Це дозволяє використовувати спеціальне обладнання для виконання вимогливих обчислень, звільняючи ЦП від таких обчислень. Зазвичай апаратне прискорення дозволяє певним апаратним пристроям (як правило, графічному процесору) виконувати операції, пов'язані з декодуванням і кодуванням відеопотоків або фільтруванням відео.

При використанні інструменту FFmpeg, декодування, що підтримується HW, вмикається за допомогою -hwaccelопції, яка дозволяє певний декодер. Кожен декодер може мати конкретні обмеження (наприклад, декодер H.264 може підтримувати лише базовий профіль). Кодування, що підтримується HW, вмикається за допомогою використання конкретного кодера (наприклад, nvenc_h264). Фільтрування HW-підтримуваної обробки підтримується лише в декількох фільтрах, і в цьому випадку ви включаєте код OpenCL через параметр фільтра.

Існує кілька стандартів API прискорення апаратного прискорення, деякі з яких певною мірою підтримуються FFmpeg.

Параметр "-hwaccel auto" дозволяє вибрати апаратне прискорене декодування, яке буде використовуватися для сеансу кодування. Ви можете додати цей парам з "auto" перед введенням (якщо ваш x264 компілюється з підтримкою OpenCL, ви можете спробувати додати параметр -x264opts), наприклад:

ffmpeg -hwaccel auto -i input -vcodec libx264 -x264opts opencl output

Вибачте, але я не можу пригадати, як перелічити всі доступні варіанти для "-hwaccel".

Також ви можете спробувати це: https://wiki.archlinux.org/index.php/Hardware_video_acceleration


Це не здається, це конкретно відповідає на питання, хоча здається корисним. Як щодо того, як ви додасте деякі деталі, які показують, як ffmpeg та його аргументи можуть допомогти ОП.
music2myear

Ця відповідь передбачає використання ffmpeg замість ручного гальма для кодування h.264, що, мабуть, добре, оскільки питання, ймовірно, просто запитує найшвидший спосіб кодування - і припускає, що це дозволить GPU. Зауважте, що не всі графічні процесори однаково потужні (наприклад, інтегровані графічні процесори проти виділених), а також процесори мають оптимізацію, яку можуть використовувати бібліотеки, якщо бібліотека зібрана для її підтримки. Тож "апаратне прискорення" - це правильний шлях, який слід пройти вниз, будь то через процесор чи графічний процесор.
Майкл

0

В даний час Handbrake підтримує такі кодери, прискорені апаратним забезпеченням для H.264 / AVC:

  1. Intel QuickSync (для Windows та Linux). Це сумісно щонайменше з Intel-процесором Sandybridge (Core 2-го покоління) - лінійки процесорів серії з інтегрованою графікою та включеною в операційну систему. Рекомендована апаратура для прийнятної якості кодування: Haswell (Core-Series 4-го покоління) і далі, який запровадив концепцію тонкозернистих цільових рівнів (TU), функції пошуку (наприклад, режими кодування LA-BRC та ICQ ) зі значно кращими показниками. Дивіться посібник із використання документації ручного гальма тут .

  2. NVENC NVIDIA : для цього потрібні як мінімум графічні процесори серії Kepler (GK +) NVIDIA від високопродуктивних споживчих SKU (серії GTX) та професійних моделей (графічні процесори Quadro і Tesla на базі Kepler і далі). Це доступно як для Windows, так і для Linux.

Слід зазначити, що з NVENC ви будете штучно обмежені максимум двома сеансами одночасного кодування на споживчих товарних носіях, тоді як професійна лінійка цим не впливає. Для отримання довідки щодо конкретних можливостей кодера зверніться до матриці GPU . Для кращої продуктивності та якості кодера дотримуйтесь останньої ітерації графічних процесорів Pascal і Volta .

Необов'язково:

  1. Підтримка кодування AMD AMF також доступна лише в поточних нічних версіях для Windows. Особлива примітка щодо AMF AMD (який входить у кодер VCE, вбудований у апаратне забезпечення у всіх GCN + SKU), полягає в тому, що щодо новіших апаратних засобів, таких як Polaris (серія RX 400+) та Vega , деякі вдосконалені настройки кодування для H.264 / AVC вони були застарілими, коли вони запровадили підтримку кодування HEVC. AMD знизила B-кадр кодування, не підтримуючи адаптивну квантування (AQ), особливість, яку згадані апаратні кодери (QuickSync та NVENC) реалізували поколіннями без регресій. Також дивіться це в примітках щодо показників пропускної здатності щодо того, чого очікувати.

Що стосується підтримки Apple, то це в кращому випадку орієнтовне . VideoToolBox API, де реалізований за рамки Handbrake, також , здається, має дуже обмежений набір елементів управління. Навіть якщо Handbrake сприймає його вище за течією, не чекайте чудес щодо збереження якості та пропускної здатності.

Зауважте, що вам може знадобитися використовувати останню нічну збірку, щоб використовувати найновіші функції кодера на вашій платформі, як зараз. Це напевно зміниться в майбутньому.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.