Jump to content

ffmpeg AMD Hardware transcoding (AMF) für H.264 und HEVC


feedzapper

Recommended Posts

Seit kurzem wird von ffmpeg auch das hardware transcoding von H.264 und HEVC Streams für AMD Grafikeinheiten unterstüzt.

Unterstützt werden auch ältere GPU und APU unter Windows. Voraus gesetzt es sind die aktuellen Treiber installiert.

Bei älteren GPU/APU unter dem Schlagwort "RE-LIVE" Treiber herunterzuladen.

Da ich in meinem zweiten Rechner einen AMD A10-7850 mit integrierter R7 Radeon Grafik verwende, war ich dort natürlich neugierig.

Ein aktueller ffmpeg trunk mit AMF support war schnell compiliert und mein erstaunen war wirklich groß.

Zu meiner Überraschung muss ich sagen, dass es auf Anhieb ohne Probleme funktionierte.

Die CPU Last sank von so um die 80-99% (je nach PRESET mit libx264) auf 20% (HD mit 1280x720)  mit dem h264_amf Codec.

Vielleicht könnte man einen entsprechenden Eintrag zukünftig in die ffmpegprefs.ini einpflegen ?

 

hier meine presets für die ffmpegprefs.ini (Beispielhaft) :

 

[Flash High 5160 kbit AMF]
Cmd=-analyzeduration 1500k {offset} {realtime} -i "{infile}" -f flv -c:v h264_amf -bufsize 10000k -b:v 5000k -maxrate 5000k -g 50 {framerate} -map 0:0 -map 0:1 -vf "yadif=0:-1:1, scale={scalex}:{scaley}" -quality quality -rc vbr_peak -tune film -vprofile high -level 4.2 -c:a aac -ab 160k -ar 48000 -ac 2 -async 1 -y "{outfile}"
maxWidth=1280
maxHeight=720
MimeType=video/x-flv
Ext=.flv

 

hier noch die möglichen Encoder Einstellungen in der ffmpeg commandline :

 

Encoder h264_amf [AMD AMF H.264 Encoder]:
    General capabilities: delay 
    Threading capabilities: none
    Supported pixel formats: nv12 yuv420p d3d11
h264_amf AVOptions:
  -usage             <int>        E..V.... Encoder Usage (from 0 to 3) (default transcoding)
     transcoding                  E..V.... Generic Transcoding
     ultralowlatency              E..V.... 
     lowlatency                   E..V.... 
     webcam                       E..V.... Webcam
  -profile           <int>        E..V.... Profile (from 66 to 257) (default main)
     main                         E..V.... 
     high                         E..V.... 
     constrained_baseline              E..V.... 
     constrained_high              E..V.... 
  -level             <int>        E..V.... Profile Level (from 0 to 62) (default auto)
     auto                         E..V.... 
     1.0                          E..V.... 
     1.1                          E..V.... 
     1.2                          E..V.... 
     1.3                          E..V.... 
     2.0                          E..V.... 
     2.1                          E..V.... 
     2.2                          E..V.... 
     3.0                          E..V.... 
     3.1                          E..V.... 
     3.2                          E..V.... 
     4.0                          E..V.... 
     4.1                          E..V.... 
     4.2                          E..V.... 
     5.0                          E..V.... 
     5.1                          E..V.... 
     5.2                          E..V.... 
     6.0                          E..V.... 
     6.1                          E..V.... 
     6.2                          E..V.... 
  -quality           <int>        E..V.... Quality Preference (from 0 to 2) (default speed)
     speed                        E..V.... Prefer Speed
     balanced                     E..V.... Balanced
     quality                      E..V.... Prefer Quality
  -rc                <int>        E..V.... Rate Control Method (from -1 to 3) (default -1)
     cqp                          E..V.... Constant Quantization Parameter
     cbr                          E..V.... Constant Bitrate
     vbr_peak                     E..V.... Peak Contrained Variable Bitrate
     vbr_latency                  E..V.... Latency Constrained Variable Bitrate
  -enforce_hrd       <boolean>    E..V.... Enforce HRD (default false)
  -filler_data       <boolean>    E..V.... Filler Data Enable (default false)
  -vbaq              <boolean>    E..V.... Enable VBAQ (default false)
  -frame_skipping    <boolean>    E..V.... Rate Control Based Frame Skip (default false)
  -qp_i              <int>        E..V.... Quantization Parameter for I-Frame (from -1 to 51) (default -1)
  -qp_p              <int>        E..V.... Quantization Parameter for P-Frame (from -1 to 51) (default -1)
  -qp_b              <int>        E..V.... Quantization Parameter for B-Frame (from -1 to 51) (default -1)
  -preanalysis       <boolean>    E..V.... Pre-Analysis Mode (default false)
  -max_au_size       <int>        E..V.... Maximum Access Unit Size for rate control (in bits) (from 0 to INT_MAX) (default 0)
  -header_spacing    <int>        E..V.... Header Insertion Spacing (from -1 to 1000) (default -1)
  -bf_delta_qp       <int>        E..V.... B-Picture Delta QP (from -10 to 10) (default 4)
  -bf_ref            <boolean>    E..V.... Enable Reference to B-Frames (default true)
  -bf_ref_delta_qp   <int>        E..V.... Reference B-Picture Delta QP (from -10 to 10) (default 4)
  -intra_refresh_mb  <int>        E..V.... Intra Refresh MBs Number Per Slot in Macroblocks (from 0 to INT_MAX) (default 0)
  -coder             <int>        E..V.... Coding Type (from 0 to 2) (default auto)
     auto                         E..V.... Automatic
     cavlc                        E..V.... Context Adaptive Variable-Length Coding
     cabac                        E..V.... Context Adaptive Binary Arithmetic Coding
  -me_half_pel       <boolean>    E..V.... Enable ME Half Pixel (default true)
  -me_quarter_pel    <boolean>    E..V.... Enable ME Quarter Pixel (default true)
  -aud               <boolean>    E..V.... Inserts AU Delimiter NAL unit (default false)
  -log_to_dbg        <boolean>    E..V.... Enable AMF logging to debug output (default false)

 

 

viel spass beim Testen ...

  • Thanks 1
Link to comment

Hallo feedzapper
die 32bit version von ffmpeg liefert mir leider einen fehler.

ffmpeg.exe -c:v h264_amf -i org.mpg z:\test.h264

unknown decoder 'h264_amf'

AMD Radeon HD 5450

 

was meinst du ?

 

vg

Link to comment
vor 30 Minuten schrieb sir drake:

Hallo feedzapper
die 32bit version von ffmpeg liefert mir leider einen fehler.

ffmpeg.exe -c:v h264_amf -i org.mpg z:\test.h264

unknown decoder 'h264_amf'

AMD Radeon HD 5450

Deine Grafikarte ist zu alt, sie erfüllt nicht die Mindestanforderungen der Treiberversion  -> AMD Radeon Software Crimson Edition 16.7.3 und neuer ..

vor 30 Minuten schrieb sir drake:

 

 

Link to comment
vor 8 Stunden schrieb Goggo16:

Hi,

 

interessante Sache. Gibts da irgendwo ne Liste mit Graphikkarten?

 

LG, Goggo

 

Auszug aus dem AMF SDK :

 

The AMF framework is compatible with most recent Radeon GPUs starting with the Southern Islands family and APUs of the Kabini, Kaveri, Carrizo families and newer.

 

Alle ab RADEON HD7000 / R7 "Southern Island" aufwärts incl. den APU im A10 mit integrierter R7 Grafikeinheit.

Halt alle Grafikarten die einen südlichen Inselnamen als Codenamen haben. e.g. CapeVerde, Turks, Bonaire...

Kann man ja nachschlagen bei Wikipedia. 

 

 

Edited by feedzapper
Link to comment
  • 3 months later...
On ‎13‎.‎12‎.‎2017 at 9:19 AM, Goggo16 said:

Hi,

 

interessante Sache. Gibts da irgendwo ne Liste mit Graphikkarten?

 

LG, Goggo

Ich weiß, das Posting ist etwas älter, aber hier ist die Liste: https://en.wikipedia.org/wiki/Video_Coding_Engine#Overview

Es gibt zwar bessere, aber für den einfachen Überblick ausreichend. 

 

Overkill: https://www.x.org/wiki/RadeonFeature/

Edited by deekey777
Link to comment
  • 2 years later...

Hallo,

 

ich möchte mit meinem Lenovo Notebook mit AMD Ryzen 5 und AMD Radeon Vega 8 Graphics mit Ffmpeg DVB-T2 HD Aufnahmen (H.265 / HEVC) für mein altes Windows XP Notebook bzw unseren Flachbild-TV in MPEG konvertieren. Kann man die Grafikkarte zur Beschleunigung einsetzen und was müßte man dazu angeben? Ich verwende normalerweise "-f dvd -target pal-dvd " als Paramerter.

 

Wie ich gerade von sir drake gelesen habe soll die AMD-Grafikkarte MPEG gar nicht in dieser Hinsicht  unterstützen.

 

 

Viele Grüße

 

Webturlt

Edited by Webturtle
Nachtrag: Wie ich gerade ...
Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...