Hardwareoptimierung mit ffmpeg

2881
Jeremy French

Ich habe eine Linux-Box und möchte einige Videos mit ffmpeg verschlüsseln. Ich habe gehört, dass meine CPU (ein Core i5-Prozessor der zweiten Generation) Hardware-Unterstützung für die h.264-Codierung bietet.

Ist es möglich, ffmpeg dazu zu bringen, und wenn ja, wie?

0
Nur ein paar allgemeine Gedanken: Diese Prozessoren sind sehr neu und für Hardwareunterstützung, die von Software unterstützt wird, ist Zeit erforderlich. Compiler müssten es unterstützen und später auch Programme. Meine Google-Kenntnisse könnten schlecht sein, aber ich konnte keine Hardwareunterstützung für Intel® Quick Sync Video auf FFMPEG oder GCC finden. AndrejaKo vor 13 Jahren 0
Es gibt einige interessante Diskussionen [hier] (http://phoronix.com/forums/showthread.php?29110-Intel-s-Linux-Sandy-Bridge-Graphics-Still- Troubling/page2). AndrejaKo vor 13 Jahren 1

3 Antworten auf die Frage

3
林正浩

Bis heute wird die QuickSync-Technologie von Intel unter Linux unterstützt und wird auf zwei Arten offengelegt: VAAPI und Intels Media SDK.

Bei entsprechender Konfiguration erhalten Sie die QuickSync-basierten Encoder über das Intel MediaSDK, h264_qsvund zwar hevc_qsv. So sehen Sie die Encoder-Nutzung:

ffmpeg -h encoder=h264_qsv  ffmpeg -h encoder-hevc_qsv 

Die zweite Methode erfordert über die VAAPI-APIs, dass FFmpeg mit der --enable-vaapian der ./configureStufe übergebenen Option erstellt wird . Dies ist die Standardeinstellung für Distributionen wie Debian und Arch Linux und daher sofort einsatzbereit.

Um die verfügbaren VAAPI-basierten Encoder und Filter für einen FFmpeg-Build aufzulisten, führen Sie Folgendes aus:

$ for i in encoders decoders filters; do echo $i:; ffmpeg -hide_banner -$ | egrep -i "vaapi" done 

Und bei Verwendung:

ffmpeg -h encoder=hevc_vaapi   ffmpeg -h encoder=h264_vaapi  ffmpeg -h encoder=vp8_vaapi  ffmpeg -h encoder=vp9_vaaapi 

Aus der Liste, die oben veröffentlicht wurde, ist es offensichtlich, dass jeder Encoder den Videocodec über den gesamten Ausgang von H.265 / HEVC bis VP9 ausgibt.

Die Plattformunterstützung hängt von Ihrer Plattform ab:

(ein). Die H.264-Kodierung wird von Sandybridge (zweite Generation der Intel Core Processor-Grafik) bis hin zur heutigen Zeit unterstützt.

(b). Die HEVC-Codierung wird ab Skylake und darüber hinaus unterstützt, die 10-Bit-Codierung ist ab Kabylake verfügbar.

(c). Die VP8-Kodierung ist mindestens von Broadwell (Intel Core Processor Graphics der 5. Generation) und darüber hinaus verfügbar.

(d). Die VP9-Kodierung ist mindestens von Kabylake und höher verfügbar. Coffelake und darüber hinaus bietet 10-Bit-VP9-Kodierung.

Ein paar zusätzliche Hinweise zur Codierungsqualität:

Und jetzt noch ein paar kleine Hinweise zu NVENC und die Abstimmung auf hochwertige Kodierungen:

Intels Quick Sync Encoder hat wie jeder andere hardwarebasierte Encoder gegenüber einem reinen Software-Encoder wie x264 und x265 mehrere Einschränkungen, nämlich die Qualitätskontrolle und eine strikte Beschränkung der unterstützten Eingabetexturtypen. Wenn Sie also QuickSync für einen professionellen Workflow in Betracht ziehen, sollten Sie den Performance-Nutzen im Vergleich zur perzeptuellen Kodierungsqualität vor der Investition in diesen bewerten.

Wenn Sie qualitativ hochwertige Kodierungen auf VAAPI suchen, stellen Sie sicher, dass Sie mindestens Haswell (Intel 4. Generation iGPUs) verwenden, da durch diese Architektur Funktionen wie das Konzept der „Target Usage“ (TU) eingeführt wurden. Diese Funktion soll einen einfachen Zugriff auf eine Reihe von Abstufungen ermöglichen, ohne dass die Benutzer dazu gezwungen werden müssen, eine Bitraten- und Ratensteuerungsmethode auszuwählen. Bei früheren Iterationen waren es zwar tatsächlich sieben Schritte, aber nur drei waren tatsächlich für den Verbrauch bestimmt: Qualität (TU1), ausgewogen (TU4) und Geschwindigkeit (TU7). Dies hat sich mit dem neuesten Spin von Intel HD-Grafik geändert, wobei jeder Schritt vollständig auswählbar und vom Intel Media SDK verfügbar gemacht werden kann.

Bemerkenswert sind die neueren Optimierungen in Bezug auf Bitraten-Steuerungsalgorithmen, wobei LA-BRC als bemerkenswerte Konzepte angesehen werden. Schau es dir hier an . In dieser Antwort finden Sie weitere Hinweise auf dasselbe.

0
Mr Alpha

Nein ist es nicht. FFMPEG unterstützt die QuickSync-Technologie von Intel nicht. Um QuickSync verwenden zu können, muss ein Programm über das Intel Media SDK ausgeführt werden, das für Linux nicht verfügbar ist.

Andere Teile von ffmpeg sind nur Windows. Ich denke, es könnte mit genügend Aufwand Unterstützung hinzufügen rogerdpack vor 12 Jahren 0
0
Loudenvier

x264 Zugriff auf QuickSync ohne Verwendung von MediaSDK. Intel hat sie erreicht und sie haben sich gegenseitig geholfen, das zu erreichen (google für "x264 QuickSinc). Es kann möglich sein, von ihren Bemühungen zu profitieren und sie auf ffmpeg zu bringen ...