Fra april 2015 GStreamer 1.2 inkluderet i Raspbian understøtter OpenMAX-hardwareaccelereret H.264-kodning gennem omxh264enc.
Jeg har lavet nogle benchmarking-sammenligninger:
- MacBook Pro (Tidlig 2011) dual-core i7-2620M 2,7 GHz (Sandy Bridge) - 4 GB RAM
- RaspBerry Pi 2 Model B 900MHz quad-core ARM Cortex-A7 CPU - 1 GB RAM
ol > Eksempelfil: 60'ers prøve fra filmen Alatriste (2006). Den originale fil er 1080p og tager 30 MB. Jeg kodede filen til 720p. Alle lydspor blev ignoreret for at koncentrere undersøgelsen om videokodning.
Resultater:
On (1) ved hjælp af håndbremse (x264 codec) transkodede jeg med x264-indstillinger er meget lav og gennemsnitlig bithastighed 1145 kbps (1-pass), hvilket resulterede i en 7,7 MB-fil. Profil Høj, niveau 4.0. Kodningen tog 3 min. 36 s ved hjælp af 4 tråde. Samlet kumuleret CPU-opladning af håndbremse ~ 380%. Videokvaliteten var meget god. Små artefakter kunne observeres, og tab af detaljer kunne ikke let observeres. Se stadig nedenfor.
On (2) ved hjælp af GStreamer og omxh264enc (hardwareaccelereret) transkodede jeg med target-bitrate = 1145000 (1145kbps), control-rate = 1 (variabel bitrate-kontrolmetode) hvilket resulterede en 6,9 MB fil. Kodningen tog 7 min 4 s ved hjælp af 1 tråd. Samlet kumuleret CPU-opladning på gst-launch-1.0 ~ 100%. Videokvaliteten blev mærkbart forringet med artefakter, der var tydeligt synlige og let observerbare tab af detaljer. Se stadig nedenfor.
gst-launch-1.0 -v filesrc location = sample-1080p.mp4! dekodebin! videokonverter! \ videoskala! video / x-raw, bredde = 1280, højde = 688! omxh264enc control-rate = 1 \ target-bitrate = 1145000! h264parse! mp4mux! \ filesink location = sample-720p-OMX-1145kbps.mp4
Når du bruger GStreamer med x264enc som koder, går den samlede kumulerede CPU-opladning af gst-launch-1.0 til ca. 380%, hvilket understøtter det faktum, at omxh264enc faktisk bruger GPU'en. Også med x264enc i (2) går tiden ud over 15 minutter.
Konklusion:
For en ret ens filstørrelse var den tid, der blev brugt af den hardwareaccelererede RaspBerry Pi 2 GPU-indkoder, næsten dobbelt så lang som for software x264-koderen på en dual core i7-2620M. Tilføjelse af lydkodning og multiplexing kunne lukke lidt dette hul på grund af den stort set ubrugte CPU på RaspBerry Pi under denne test. Videokvaliteten var klart overlegen på den softwarekodede fil. Se stillbilleder nedenfor.
Tilgængelige konfigurationsindstillinger for omxh264enc (eksponeret af gst-inspect-1.0) er begrænsede sammenlignet med x264-koderen, men yderligere eksperimenter kan give bedre kvalitet.
Bilag:
Installation af GStreamer og OpenMax fra Raspbian-arkiver:
$ apt-get install libgstreamer1.0-0 libgstreamer1.0-0-dbg libgstreamer1 .0-dev liborc-0.4-0 liborc-0.4-0-dbg liborc-0.4-dev liborc-0.4-doc gir1.2-gst-plugins-base-1.0 gir1.2-gstreamer-1.0 gstreamer1.0-alsa gstreamer1 .0-doc gstreamer1.0-omx gstreamer1.0-plugins-bad gstreamer1.0-plugins-bad-dbg gstreamer1.0-plugins-bad-doc gstreamer1.0-plugins-base gstreamer1.0-plugins-base-apps gstreamer1.0-plugins-base-dbg gstreamer1.0-plugins-base-doc gstreamer1.0-plugins-good gstreamer1.0-plugins-good-dbg gstreamer1.0-plugins-good-doc gstreamer1.0-plugins-grim gstreamer1.0-plugins-grim-dbg gstreamer1.0-plugins-grim-doc gstreamer1.0-pulseaudio gstreamer1.0-værktøj gstreamer1.0-x libgstreamer-plu gins-bad1.0-0 libgstreamer-plugins-bad1.0-dev libgstreamer-plugins-base1.0-0 libgstreamer-plugins-base1.0-dev $ gst-launch-1.0 --versiongst-launch-1.0 version 1.2. 0GStreamer 1.2.0
QuickTime X stadig med 720p video transkodet ved hjælp af HandBrake (x264) på en MacBook Pro (åbn eller download billede for den fulde detalje):
QuickTime X stadig med 720p video transkodet ved hjælp af GStreamer (hardwarekodning gennem OpenMAX) på en Raspberry Pi 2 (åbn eller download billede for den fulde detalje):
Opdatering :►
Efter ecc29s forslag om at bruge lanczos skaleringsmetode udførte jeg en test, der tilføjede method = lanczos
til videoscale
. Kodningsprocessen fordobles i tide og springer fra ca. 7 minutter til 14 minutter 37'ere. Resultatet er næsten ens i kvalitet som uden metode (standard bilinear). Faktisk kommer fejlene hovedsageligt fra kodningsprocessen i hardware. De er tydeligt komprimeringsartefakter.