Kann eine GPU verwendet werden, um h264 zu verschlüsseln?

13

Ich frage mich, ob ich eine bessere Grafikkarte bekomme, die mit der Handbremse die h264-Codierung auf meinem Computer beschleunigt.

Wenn ja, wie kann ich feststellen, welche Grafikkarte dies unterstützt?

Ich bin mir bewusst, dass die GPU die Hardware-Dekodierung von h264 durchführen kann, bin mir jedoch nicht sicher, ob es sich um eine Kodierung handelt.

Peter
quelle
Verwandte Themen: Beschleunigte Videokomprimierung - Sie möchten in jedem Fall eine NVIDIA-Karte dafür haben und bereit sein, Geld auszugeben.
Slhck
Ein weiterer Blog-Beitrag zum
Thema
Für die h.264-Codierung verwendet die Handbremse den Software-Encoder x264 (Videolan) . Einige der folgenden Antworten implizieren, dass die Handbremse ffmpeg verwendet, das x264- oder hw-Implementierungen (GPU) verwenden kann. Diese alte (aber immer noch relevante) Frage lautet wahrscheinlich nicht "wie man die Handbremse schneller macht", sondern "wie man die h.264-Codierung schneller macht". Die Antworten sind haltbar (einige sind bereits abgelaufen). Wenn Sie jedoch ML und / oder Batch-Verarbeitung
ausführen,
fwiw, ich fand diesen Kommentar von ffmeg interessant: "Hardware-Encoder generieren normalerweise eine Ausgabe von erheblich geringerer Qualität als gute Software-Encoder wie x264, sind aber im Allgemeinen schneller und verbrauchen nicht viel CPU-Ressourcen Ausgabe mit der gleichen Wahrnehmungsqualität oder Ausgabe mit einer niedrigeren Wahrnehmungsqualität mit der gleichen Bitrate.)
Michael

Antworten:

7

Mit Handbremse wäre die Antwort nein. Handbrake ist ein H.264-Encoder nur für die CPU, der jetzt OpenCL für die Videoskalierung und DXVA für die Videodecodierung unterstützt.

Die Frage nach slhck verknüpft erwähnt MediaCoder , aber es erfordert entweder eine Nvidia - Grafikkarte oder ein Intel - CPU mit einem zweiten Generation Grafikkern.

Es gibt einige ältere Produkte, die veraltet sind, insbesondere Badaboom und die Software ATi Avivo.

Badaboom, das Nvidia- und Intel-Grafikprozessoren verwenden könnte, um den Kodierungsprozess zu beschleunigen, ist jedoch nicht mehr aktuell und unterstützt neuere Grafikkarten nicht mehr.

ATi hatte einen eigenen Video-Encoder, der früher "Avivo" hieß, bevor er in das AMD Codec-Paket integriert wurde, das den AMD Video Converter enthielt, der jedoch nicht mehr verfügbar ist.

Mokubai
quelle
Ich benutze momentan eine AMD-CPU. Bedeutet das, dass dies Zeitverschwendung für mich ist? Kann es irgendeine NVIDIA-Karte sein - ach so, es muss CUDA unterstützen?
Peter
Ich habe diesen Link gefunden, en.wikipedia.org/wiki/CUDA, was darauf hindeutet, dass ziemlich viele NVIDIA-Karten CUDA unterstützen.
Peter
Ich habe meine Antwort mit einem Link zum AMD-Softwarepaket aktualisiert, mit dessen Hilfe Sie möglicherweise die GPU zum Codieren von Videos verwenden können, für das jedoch eine Karte der HD2000-Serie oder besser erforderlich ist. Wenn Sie eine besonders leistungsstarke CPU, aber eine kostengünstige Grafikkarte haben, ist die Handbremse möglicherweise noch schneller.
Mokubai
Badaboom läuft zum 18.04.2012 aus.
HVS
2
Die Antwort oben ist nicht / nicht mehr korrekt.
Totaam
4

x264 unterstützt jetzt die OpenCL-Codierungsbeschleunigung. Wie viel Beschleunigung Sie erhalten, hängt von der Leistung Ihrer Grafikkarte ab. Bei meinem GTS 450 bekomme ich keine und bei langsameren Karten wird die Codierung tatsächlich verlangsamt. Bessere Karten können helfen. Alles, was Sie tun müssen, ist --opencl zur x264-Befehlszeile hinzuzufügen. Ich glaube, Handbrake nutzt die gleichen x264-Bibliotheken und bietet in neueren Builds die gleiche OpenCL-Beschleunigung.

Totaam
quelle
Wie soll ich die OpenCL-Codierungsbeschleunigung verwenden?
Dr.jacky
2

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

FFmpeg bietet ein Subsystem für die Hardwarebeschleunigung.

Mit der Hardwarebeschleunigung können bestimmte Geräte (normalerweise Grafikkarten> oder andere bestimmte Geräte) für die Durchführung der Multimedia-Verarbeitung verwendet werden. Dies ermöglicht die Verwendung dedizierter Hardware zur Durchführung anspruchsvoller Berechnungen, während die CPU von solchen Berechnungen befreit wird. Normalerweise ermöglicht die Hardwarebeschleunigung bestimmten Hardwaregeräten (normalerweise der GPU), Vorgänge im Zusammenhang mit dem Decodieren und Codieren von Videostreams oder dem Filtern von Videos auszuführen.

Bei Verwendung von FFmpeg wird die HW-unterstützte Dekodierung über die -hwaccelOption aktiviert , die einen bestimmten Dekoder aktiviert . Für jeden Decoder gelten möglicherweise bestimmte Einschränkungen (z. B. unterstützt ein H.264-Decoder möglicherweise nur das Basisprofil). Die HW-unterstützte Codierung wird durch die Verwendung eines bestimmten Encoders (z. B. nvenc_h264) aktiviert. Filtern Die HW-unterstützte Verarbeitung wird nur in wenigen Filtern unterstützt. In diesem Fall aktivieren Sie den OpenCL-Code über eine Filteroption.

Es gibt verschiedene API-Standards für die Hardwarebeschleunigung, von denen einige zum Teil von FFmpeg unterstützt werden.

Mit der Option "-hwaccel auto" können Sie die hardwarebasierte beschleunigte Dekodierung auswählen, die für die Kodierungssitzung verwendet werden soll. Sie können diesen Parameter mit "auto" vor der Eingabe hinzufügen (wenn Ihr x264 mit OpenCL-Unterstützung kompiliert ist, können Sie versuchen, -x264opts param hinzuzufügen), zum Beispiel:

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

Entschuldigung, aber ich kann mich nicht erinnern, wie ich alle verfügbaren Optionen für "-hwaccel" aufgelistet habe.

Sie können dies auch versuchen: https://wiki.archlinux.org/index.php/Hardware_video_acceleration

Ruslan Berozov
quelle
Es scheint nicht, dass dies speziell die Frage beantwortet, obwohl es nützlich erscheint. Wie wäre es, wenn Sie einige Details hinzufügen, die zeigen, wie ffmpeg und seine Argumente dem OP helfen können.
music2myear
Diese Antwort impliziert, dass für die h.264-Codierung ffmpeg anstelle von handbrake verwendet wird, was wahrscheinlich in Ordnung ist, da die Frage wahrscheinlich nur nach dem schnellsten Weg zum Codieren fragt - und davon ausgeht, dass die GPU dies ermöglichen würde. Beachten Sie, dass nicht alle GPUs gleich leistungsfähig sind (z. B. integrierte GPUs im Vergleich zu dedizierten GPUs), und dass die CPUs auch Optimierungen aufweisen, die Bibliotheken möglicherweise verwenden, wenn die Bibliothek zur Unterstützung kompiliert wird. "Hardwarebeschleunigung" ist also der richtige Weg, ob über CPU oder GPU.
Michael
0

Gegenwärtig unterstützt Handbrake die folgenden hardwarebeschleunigten Encoder für H.264 / AVC:

  1. Intel QuickSync (unter Windows und Linux). Dies ist kompatibel mit mindestens Intel-basierten Sandybridge - Prozessoren (Core der 2. Generation) mit integrierter Grafik, die für das Betriebssystem verfügbar sind. Empfohlene Hardware für eine akzeptable Codierungsqualität: Haswell (Core-Serie der 4. Generation) und höher, mit der das Konzept feinkörniger Zielebenen (TUs) und Lookahead-Funktionen (wie LA-BRC- und ICQ-Codierungsmodi ) mit einer deutlich besseren Leistung eingeführt wurde. Siehe Gebrauchsanleitung aus der Handbremsendokumentation hier .

  2. NVIDIAs NVENC : Dies erfordert mindestens NVIDIAs GPUs der Kepler (GK +) - Serie und höher von den Hochleistungs-Consumer-SKUs (GTX-Serie) und den professionellen Lineups (Quadro- und Tesla-GPUs auf Kepler-Basis und höher). Dies ist sowohl unter Windows als auch unter Linux verfügbar.

Bemerkenswert ist, dass Sie mit NVENC künstlich auf höchstens zwei gleichzeitige Codierungssitzungen für die Consumer-SKUs beschränkt sind, während die professionelle Aufstellung davon unberührt bleibt. Informationen zu bestimmten Encoderfunktionen finden Sie in der GPU-Matrix . Halten Sie sich für die beste Encoder-Leistung und -Qualität an die neueste Iteration von Pascal- und Volta- GPUs.

Optional:

  1. Die Codierungsunterstützung von AMD AMF ist auch in den aktuellen nächtlichen Builds für NUR Windows verfügbar. Ein besonderer Hinweis zu AMDs AMF (der den in der Hardware aller GCN + -SKUs integrierten VCE-Encoder nutzt) ist, dass bei neuerer Hardware wie Polaris (RX 400+ -Reihe) und Vega einige erweiterte Encoder-Tunings für H.264 / AVC möglich sind wurden verworfen, da sie die HEVC-Codierungsunterstützung einführten. Was AMD fallen ließ, war die B-Frame-Codierung ohne Unterstützung für die adaptive Quantisierung (AQ), eine Funktion, die die oben genannten hardwarebasierten Codierer (QuickSync und NVENC) seit Generationen ohne Regressionen implementiert haben. Beachten Sie dies auch in den Hinweisen zu den Durchsatzmetriken zu den zu erwartenden Ergebnissen.

Die Unterstützung von Apple ist bestenfalls vorläufig . Die VideoToolBox- API, die über den Handbrake-Bereich hinaus implementiert wurde, verfügt anscheinend auch über eine sehr begrenzte Anzahl von Steuerelementen. Erwarten Sie keine Wunder in Bezug auf Qualitätserhalt und Durchsatz, auch wenn Handbrake diese Funktion im Vorfeld übernimmt.

Beachten Sie, dass Sie möglicherweise die aktuellste nächtliche Version benötigen, um die aktuellsten Encoderfunktionen auf Ihrer Plattform zu verwenden. Dies wird sich in Zukunft definitiv ändern.

林正浩
quelle