Videos mit GPU-Unterstützung codieren

Im Moment beschäftige ich mich viel mit dem Thema Videokodierung, speziell dem Kodieren von Videos mit dem H.264-Codec. Der H.264-Codec bietet den Vorteil, dass er von einer Vielzahl an Geräten unterstützt wird und bei hoher Kompression eine gute Bildqualität liefert. Problem hierbei ist jedoch die Kodierung selbst, welche im Vergleich zu DivX oder ähnlichen Codecs mindestens zwei- bis dreimal solange benötigt.

Dann fiel mir spontan wieder ein, dass man auch ATI- und NVIDIA-Grafikkarten bei der Kodierung zu Hilfe nehmen kann. ATI bietet hierfür die Stream-Technologie, NVIDIAs Pendant dazu nennt sich CUDA. Dann gibt es noch die Programmierplattform OpenCL, die GPU-Computing sowohl auf NVIDIA- als auch auf ATI-Grafikkarten nutzbar machen soll.

Um Stream nutzen zu können, benötigt man mindestens eine ATI-Grafikkarte der 3xxx-Reihe, für CUDA mindestens eine GeForce 8xxx. Soweit ich weiß, gelten dieselben Anforderungen auch bei OpenCL.

Leider gibt es im Moment noch kaum Programme, die sich die Power der Grafikkarten zum Kodieren von Videos zunutze machen, da die Programmierung dafür wohl sehr schwierig ist. Im OpenSource-Bereich konnte ich so z.B. noch kein Programm finden, welches sich einer der Techniken bedient. Insgesamt habe ich nur 4 Produkte finden können, mit denen man Videos per GPU kodieren kann, wovon lediglich eines kostenlos ist:

Man sollte sich vor dem Kauf vergewissern, dass die eigene Grafikkarte unterstützt wird. Ich konnte z.B. weder ATI Avivo XCode, noch Cyberlink Espresso oder TMPGEnc 4.0 XPress dazu überreden, meine ATI Mobility Radeon 3450 zum Codieren von Videos zu nutzen. Das kann entweder an mangelnder Stream-Unterstützung liegen (ich habe dazu leider nichts finden können) oder daran, dass die Tools vielleicht erst ab einer bestimmten Grafikkartenreihe auf die GPU zurückgreifen. Ich meine irgendwo gelesen zu haben, dass die Tools erst ab der Radeon 4xxx-Reihe auf die Grafikkarte zurückgreifen.

Glücklicherweise kann man die Kompatibilität problemlos mit den zur Verfügung gestellten Demo-Versionen testen.

Ich für meinen Teil finde, dass dieses Thema ein enormes Potenzial hat, vielleicht werden die kommenden OpenSource-Codierer ja mit OpenCL ausgestattet… wer weiß :)

Empfehlen

9 Kommentare

[...] ich mich mit Patrick über dieses Thema unterhalten habe, welcher sich aktuell etwas näher mit diesem auseinandersetzt, wies dieser mich netterweise auf die Software Badaboom von Nvidia hin, welche die Encoding Arbeit [...]

Ortreum schrieb am 16. Februar 2010

Auch wenn es vielleicht wie Klugscheißen klingt, mit DirectX 11 wird das Hickhack zwischen den Grafikkartenherstellern, was die GPU-Nutzung von 08/15 Algorithmen angeht, endlich ein Ende finden. Als Programmierer muss man sich dann nicht mehr zwischen den einzelnen Typen entscheiden. Man erschlägt einfach allesamt mit nur einer Schnittstelle.

Gruß

Patrick schrieb am 16. Februar 2010

Kannst du mir sagen, wie du das bitte meinst? DirectX war schon immer eine Abstraktionsschicht für die Programmierung der Grafik, bei der man keine GPU-Spezifischen Befehle programmieren muss…

Leo schrieb am 23. Februar 2010

Bisher läuft es so, dass der Zugriff auf die CPU Rechenleistung nur über herstellerspziefiche Schnittstellen möglich ist (CUDA bzw Steam)

Mit DX11 stehen diese Funktionen allen programmen zur Verfügung und funktionieren auf beiden Systemarchitekturen (ATI Karten sind anders aufgebaut als NVIDIA Modelle)

Damit wird das Problem umgangen, das bis dato jedes Programm nur auf 50% der Rechner funktionieren würde

Patrick schrieb am 23. Februar 2010

Und ebenso ist OpenCL (oben im Text erwähnt) eine Schnittstelle, die sowohl CUDA (bzw. NVIDIA) als auch Stream (bzw. ATI) bedienen kann.

MrX1980 schrieb am 27. März 2010

Hallo
Leider scheint keins der Programme für die ATI HD AGP Karten nutzbar zu sein :-(
Habe eine HD4670 AGP Karte mit den Catalyst 10.3 Treiber (AGP Hotfix) und Win7x64Ult.
ATI Avivo XCode installiert sich nicht.
Dadurch mit Cyberlink MediaShow Espresso 5.5 auch nicht nutzbar.
badaboom und TMPG XPress haben (derzeit) keine ATI Stream Unterstützung.
Ich hoffe auch, dass es sich noch dank OpenCL ändern wird.

Patrick schrieb am 27. März 2010

Ich weiß auch nicht, warum die Tools alle bei mir auf dem Notebook nicht laufen. Hast du eine mobile-ATI oder eine für den Desktop? Vielleicht ist dieses Feature nur “den Großen” vorbehalten.

MrX1980 schrieb am 27. März 2010

Hi Patrick,

deine wird wohl leider nie unterstützt werden, denn bei z.B. Espresso wird erst ab der HD4650 ATI Steam unterstützt (wenn Xcode instaliert ist).
Die haben nur wohl vergessen zu erwähnen, dass es nur für die PCIe Karten gilt.
http://de.cyberlink.com/products/mediashow-espresso/gpu-optimization_de_DE.html

Gruß,
MrX1980

MrX1980 schrieb am 27. März 2010

Bei Adobe Flash Player 10.1 (beta) steht folgendes:
Hardware video decoding of H.264 content in Flash Player 10.1 is supported on AMD/ATI products with UVD2 with the ATI Catalyst™ Software Suite, starting with version 9.11 for the ATI Radeon™ family of products.

Radeon = Radeon HD 4xxx (and higher)
Mobility Radeon = Mobility Radeon HD 4xxx series (and higher)
Integrated/Motherboard = Radeon HD 3xxx (and higher)

Quelle:
http://labs.adobe.com/technologies/flashplayer10/releasenotes.pdf

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>