Станом на квітень 2015 року GStreamer 1.2, що входить до програми Raspbian, підтримує апаратне прискорене кодування H.264 через апарат omMAh264enc через апарат OpenMAX.
Я здійснив порівняльний аналіз:
- Двоядерний i7-2620M 2,7 ГГц (Sandy Bridge) MacBook Pro (початок 2011 року) - 4 Гб оперативної пам’яті
- RaspBerry Pi 2 Модель B 900MHz чотирьохядерний процесор ARM Cortex-A7 - 1 Гб оперативної пам’яті
Файл зразка: зразок 60-х з фільму «Аларісте» (2006). Оригінальний файл - 1080p і займає 30 Мб. Я перекодував файл на 720p. Усі аудіодоріжки були ігноровані, щоб зосередити дослідження на перекодування відео.
Результати:
Увімкнено (1), використовуючи Handbrake (x264 кодек), я перекодував з x264 налаштуваннями veryslow та середнім бітрейтом 1145 кбіт / с (1 пропуск), що призвело до файлу 7,7 МБ. Профіль високий, рівень 4,0. Кодування зайняло 3 хв 36 с, використовуючи 4 потоки. Загальний накопичений процесорний заряд ручного гальма ~ 380%. Якість відео була дуже хороша. Можна було спостерігати невеликі артефакти, і втрата деталей не легко спостерігається. Дивіться ще нижче.
Увімкнено (2), використовуючи GStreamer і omxh264enc (апаратне прискорення), я перекодував цільовий бітрейт = 1145000 (1145 кбіт / с), швидкість управління = 1 (метод управління змінним бітрейтом), що призвело до файлу 6,9 МБ. Кодування зайняло 7 хв 4 з використанням 1 потоку. Загальний накопичений процесорний заряд gst-start-1,0 ~ 100%. Якість відео було помітно погіршене з артефактами, добре помітними і легко помітними втратами деталей. Дивіться ще нижче.
gst-launch-1.0 -v filesrc location=sample-1080p.mp4 ! decodebin ! videoconvert ! \
videoscale ! video/x-raw,width=1280,height=688 ! omxh264enc control-rate=1 \
target-bitrate=1145000 ! h264parse ! mp4mux ! \
filesink location=sample-720p-OMX-1145kbps.mp4
При використанні GStreamer з x264enc в якості кодера загальний накопичений CPU заряд gst-start-1.0 становить приблизно 380%, що підтверджує той факт, що omxh264enc насправді використовує GPU. Крім того, для x264enc в (2) час перевищує 15 хв.
Висновок:
Для досить подібного розміру файлу час, витрачений апаратно-прискореним графічним кодером RaspBerry Pi 2, був майже вдвічі більшим, ніж у програмного кодеру x264 на двоядерному i7-2620M. Додавання перекодування аудіо та мультиплексування може трохи зменшити цей пробіл через значно невикористаний процесор на RaspBerry Pi під час цього тесту. Якість відео явно перевершувала файли, кодовані програмним забезпеченням. Дивіться фотографії нижче.
Доступні параметри конфігурації для omxh264enc (викрито gst-inspect-1.0) обмежені порівняно з кодером x264, але подальший експеримент міг би забезпечити кращу якість.
Додаток:
Встановлення GStreamer і OpenMax з сховищ Raspbian:
$ 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-ugly gstreamer1.0-plugins-ugly-dbg gstreamer1.0-plugins-ugly-doc gstreamer1.0-pulseaudio gstreamer1.0-tools gstreamer1.0-x libgstreamer-plugins-bad1.0-0 libgstreamer-plugins-bad1.0-dev libgstreamer-plugins-base1.0-0 libgstreamer-plugins-base1.0-dev
$ gst-launch-1.0 --version
gst-launch-1.0 version 1.2.0
GStreamer 1.2.0
QuickTime X все ще 720p відео, перекодованого за допомогою HandBrake (x264) на MacBook Pro (відкрийте або завантажте зображення для повної деталізації):
QuickTime X все ще 720p відео, перекодованого за допомогою GStreamer (апаратне кодування через OpenMAX) на Raspberry Pi 2 (відкрити або завантажити зображення для повної деталізації):
Оновлення:
Після пропозиції ecc29 про використання методу масштабування ланксосу я провів тест, який додав method=lanczos
до videoscale
. Процес кодування вдвічі збільшився, перескочивши приблизно з 7 хв до 14 хв 37 с. Результат за якістю майже рівний тому, що не має методу (білінеар за замовчуванням). Дійсно, дефекти в основному виникають у процесі кодування апаратних засобів. Вони явно артефакти стиснення.