Я споткнулся в Википедии статью о том , что Broadcom GPU имеет аппаратную поддержку для кодирующей H.264 / AVC, не только де -coding.
Я также нашел статью, в которой кто-то привел пример использования ffmpeg
видеофайлов h264 / mp4. Хорошо, его общее назначение процессор со специализированным GPU, так что это на самом деле не сюрприз.
Но по сравнению со стандартным настольным ПК со средней видеокартой, Raspberry Pi потенциально может кодировать H.264 / AVC, может быть, даже быстрее ? Если пользователь настольного компьютера должен был оптимизировать свой компьютер ffmpeg
под свою Core-i5xxx с графической картой Ati / Nvidia за 150 долларов ... предлагает ли эта комбинация что-либо в виде "аппаратной поддержки кодирования H.264"? Если нет, то будет ли специально принятый Raspberry-Pi-ffmpeg еще быстрее? Если да, сравнение скорости уже есть?
источник
Ответы:
На данный момент, похоже, еще нет стабильного программного обеспечения для кодирования видео h264 с использованием аппаратного обеспечения, даже если официально было объявлено, что Raspberry Pi поддерживает аппаратное кодирование h264. Таким образом, мы не можем сделать тест для сравнения производительности с обычным ПК .
Я не знаю, работает ли кто-то над этой темой, но разработчик,
libav
кажется, пессимистично настроен по поводу интеграции такого модуля в существующийlibav
проект (см. Его ответ 2 декабря, 09:23).Я буду рад сделать тест, когда библиотека или программное обеспечение позволяет это.
источник
По состоянию на апрель 2015 года GStreamer 1.2, входящий в состав Raspbian, поддерживает OpenMAX с аппаратным ускорением кодирования H.264 через omxh264enc.
Я сделал несколько сравнительных сравнений:
Образец файла: образец 60-х из фильма Алатристе (2006). Исходный файл 1080p и занимает 30 МБ. Я перекодировал файл в 720p. Все аудиодорожки были проигнорированы, чтобы сконцентрировать исследование на транскодировании видео.
Полученные результаты:
На (1), используя Handbrake (кодек x264), я транскодировал с настройками x264 veryslow и средней скоростью передачи 1145 кбит / с (1 проход), что привело к 7,7 МБ файла. Высокий профиль, уровень 4.0. Кодирование заняло 3 минуты 36 с использованием 4 потоков. Общий накопленный заряд процессора ручника ~ 380%. Качество видео было очень хорошим. Небольшие артефакты можно было наблюдать, а потерю деталей трудно заметить. Смотрите еще ниже.
В (2), используя GStreamer и omxh264enc (с аппаратным ускорением), я транскодировал с target-bitrate = 1145000 (1145kbps), control-rate = 1 (метод управления переменной скоростью передачи битов), что привело к файлу 6,9 МБ. Кодирование заняло 7 минут 4 с использованием 1 потока. Общая накопленная загрузка процессора gst-launch-1.0 ~ 100%. Качество видео заметно ухудшилось с хорошо видимыми артефактами и заметной потерей деталей. Смотрите еще ниже.
При использовании GStreamer с x264enc в качестве кодировщика общая суммарная загрузка ЦП gst-launch-1.0 достигает примерно 380%, что подтверждает тот факт, что omxh264enc фактически использует графический процессор. Кроме того, при x264enc в (2) время превышает 15 минут.
Вывод:
При довольно схожем размере файла время, затрачиваемое аппаратно-ускоренным кодером RaspBerry Pi 2 GPU, было почти в два раза больше, чем у программного кодера x264 на двухъядерном i7-2620M. Добавление транскодирования звука и мультиплексирования может немного сократить этот разрыв из-за практически неиспользуемого ЦП на RaspBerry Pi во время этого теста. Качество видео явно превосходило программный кодированный файл. Смотрите фото ниже.
Доступные параметры конфигурации для omxh264enc (предоставляемые gst-inspect-1.0) ограничены по сравнению с кодером x264, но дальнейшие эксперименты могут обеспечить лучшее качество.
Приложение:
Установка GStreamer и OpenMax из репозиториев Raspbian:
QuickTime X по-прежнему транслируется в формате 720p с помощью HandBrake (x264) на MacBook Pro (откройте или загрузите изображение для полной информации):
QuickTime X по-прежнему транслируется в видео 720p с использованием GStreamer (аппаратное кодирование через OpenMAX) на Raspberry Pi 2 (откройте или загрузите изображение для полной информации):
Обновить:
Следуя предложению ecc29 об использовании метода масштабирования Ланцоша, я выполнил тест, добавив
method=lanczos
кvideoscale
. Процесс кодирования удвоился во времени, прыгнув примерно с 7 минут до 14 минут 37 секунд. Результат практически равен по качеству результату без метода (билинейный по умолчанию). Действительно, дефекты в основном происходят из-за аппаратного кодирования. Это явно артефакты сжатия.источник
gst-launch-1.0 -e videotestsrc pattern=zone-plate kx2=80 ky2=45 num-buffers=1 ! video/x-raw, width=1920, height=1080 ! videoconvert ! videoscale method=lanczos ! video/x-raw, width=1280, height=720 ! avimux ! filesink location=lanczos_1280.avi
lanczos
метода масштабирования.Графический процессор в RPi довольно крутой. Я читал, что с точки зрения кодирования вы можете кодировать 1080p @ 30fps. Также возможно кодирование нескольких потоков. Также считается, что вы можете кодировать видео на лету, используя RPi.
Но. Современные видеокарты имеют возможность запускать весь код на графическом процессоре, в чем действительно хорош графический процессор.
Если бы я должен был оценить личное мнение. Было бы, что RPi не будет быстрее, чем видеокарта средней спецификации. Но я думаю, что это будет намного быстрее, чем вы думаете. Может быть, даже около 75% скорости.
Я не мог найти сравнение нигде.
источник