Saya menemukan artikel Wikipedia bahwa Broadcom GPU memiliki dukungan perangkat keras untuk encoding H.264 / AVC, tidak hanya de- coding.
Saya juga menemukan artikel di mana seseorang memberi contoh menggunakan ffmpeg
untuk menghasilkan file video h264 / mp4. Ok, yang tujuan umum CPU dengan GPU khusus, sehingga tidak benar-benar yang mengejutkan.
Tetapi dibandingkan dengan PC desktop standar dengan Kartu Grafis rata-rata, akankah Raspberry Pi berpotensi menyandikan H.264 / AVC bahkan mungkin lebih cepat ? Jika pengguna desktop mengoptimalkannya ffmpeg
ke Core-i5xxx dengan kartu grafis $ 150 Ati / Nvidia ... apakah kombinasi itu menawarkan sesuatu dalam cara "dukungan penyandian perangkat keras H.264"? Jika tidak, akankah Raspberry-Pi-ffmpeg yang diadopsi secara khusus menjadi lebih cepat? Jika ya, apakah sudah ada perbandingan kecepatan?
sumber
Jawaban:
Saat ini, tampaknya masih belum ada perangkat lunak yang stabil untuk mengkodekan video h264 menggunakan perangkat keras, bahkan jika telah secara resmi diumumkan bahwa Raspberry Pi memang mendukung pengkodean perangkat keras h264. Jadi, kami tidak dapat melakukan tolok ukur untuk membandingkan kinerja dengan PC biasa .
Saya tidak tahu apakah seseorang sedang mengerjakan masalah ini, tetapi seorang pengembang dari
libav
tampaknya pesimistis mengintegrasikan modul semacam itu dalamlibav
proyek yang ada (lihat jawabannya pada 2 Desember, 09:23).Saya akan senang melakukan benchmark ketika perpustakaan atau perangkat lunak mengizinkannya.
sumber
Pada April 2015 GStreamer 1.2 yang termasuk dalam Raspbian mendukung perangkat keras OpenMAX yang mempercepat pengkodean H.264 melalui omxh264enc.
Saya telah melakukan beberapa pembandingan pembandingan:
File sampel: Sampel 60-an dari film Alatriste (2006). File asli adalah 1080p dan membutuhkan 30MB. Saya mentranskodekan file ke 720p. Semua trek audio diabaikan untuk memusatkan studi pada transcoding video.
Hasil:
Pada (1), menggunakan Handbrake (x264 codec) saya ditranskode dengan x264-settings veryslow dan bitrate 1145kbps (1-pass) rata-rata yang menghasilkan file 7,7MB. Profil Tinggi, level 4.0. Pengkodean berlangsung 3 menit 36 menggunakan 4 utas. Total akumulasi biaya CPU dari rem tangan ~ 380%. Kualitas video sangat bagus. Artefak kecil bisa diamati dan hilangnya detail tidak mudah diamati. Lihat masih di bawah.
Pada (2), menggunakan GStreamer dan omxh264enc (akselerasi perangkat keras) Saya mentranskodekan dengan target-bitrate = 1145000 (1145kbps), kontrol-rate = 1 (metode kontrol bitrate variabel) yang menghasilkan file 6,9MB. Pengkodean mengambil 7 menit 4s menggunakan 1 utas. Total biaya CPU terakumulasi dari gst-launch-1.0 ~ 100%. Kualitas video terasa menurun dengan artefak yang terlihat jelas dan kehilangan detail yang mudah diamati. Lihat masih di bawah.
Ketika menggunakan GStreamer dengan x264enc sebagai encoder, total biaya CPU terakumulasi dari gst-launch-1.0 mencapai sekitar 380%, yang mendukung fakta bahwa omxh264enc benar-benar menggunakan GPU. Juga, dengan x264enc di (2), waktu melampaui 15 menit.
Kesimpulan:
Untuk ukuran file yang hampir sama, waktu yang dihabiskan oleh RaspBerry Pi 2 GPU encoder hardware-akselerasi hampir dua kali lipat dari perangkat lunak x264 encoder pada dual core i7-2620M. Menambahkan transcoding audio dan multiplexing dapat menutup sedikit celah ini karena sebagian besar CPU yang tidak terpakai pada RaspBerry Pi selama pengujian ini. Kualitas video jelas lebih unggul pada file yang disandikan perangkat lunak. Lihat gambar di bawah.
Opsi konfigurasi yang tersedia untuk omxh264enc (diekspos oleh gst-inspect-1.0) terbatas dibandingkan dengan encoder x264 tetapi percobaan lebih lanjut dapat memberikan kualitas yang lebih baik.
Mencaplok:
Instalasi GStreamer dan OpenMax dari repositori Raspbian:
QuickTime X masih dari 720p video yang ditranskode menggunakan HandBrake (x264) pada MacBook Pro (buka atau unduh gambar untuk detail lengkap):
QuickTime X dari 720p video yang ditranskode menggunakan GStreamer (pengodean perangkat keras melalui OpenMAX) pada Raspberry Pi 2 (buka atau unduh gambar untuk detail lengkap):
Memperbarui:
Mengikuti saran ecc29 ini menggunakan Lanczos metode penskalaan saya melakukan tes menambahkan
method=lanczos
untukvideoscale
. Proses penyandian berlipat ganda dalam waktu, melompat dari sekitar 7 menit ke 14 menit 37s. Hasilnya hampir sama dalam kualitas dengan yang tanpa metode (bilinear default). Memang, cacat terutama berasal dari proses pengkodean dalam perangkat keras. Mereka jelas artefak kompresi.sumber
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
metode penskalaan.GPU dalam RPi cukup gemuk. Saya telah membaca bahwa dalam hal penyandian, Anda dapat menyandikan 1080p @ 30fps. Pengkodean beberapa stream juga dimungkinkan. Dipercaya juga bahwa Anda dapat menyandikan video dengan cepat menggunakan RPi.
Tapi. Kartu grafis modern memiliki kemampuan untuk menjalankan seluruh penyandian pada GPU, yang merupakan keahlian GPU.
Jika saya harus mengukur pendapat pribadi. RPi tidak akan lebih cepat dari kartu grafis spec menengah. Tapi saya pikir itu akan jauh lebih cepat daripada yang Anda pikirkan. Mungkin bahkan mendekati 75% kecepatannya.
Saya tidak dapat menemukan perbandingan yang tersedia di mana pun.
sumber