cara menggunakan h264_omx di RaspberryPi


0

Saya menggunakan RaspberryPi 1gen B +, untuk push stream ke web melalui rtmp. Tapi saya menemukan penggunaan CPU saya sampai 90% +. Ini adalah bagaimana saya menggunakannya:

ffmpeg -re -f concat -safe 0 -i playlist.txt -vcodec copy -acodec aac -f flv "rtmp://example.com:1060"

jadi saya ingin menggunakan GPU untuk decode / encode. Setelah riset google, saya menemukan "h264_omx", dan saya telah mengimplementasikan h264_omx:

pi@pi:/usr/src/ffmpeg $ sudo ./configure --enable-omx --enable-omx-rpi
sudo make
sudo make install

jadi saya menggunakan:

ffmpeg -re -f concat -safe 0 -i playlist.txt -vcodec h264_omx -acodec aac -f flv "rtmp://example.com:1060"

output di sini:

Gambar

Tetapi penggunaan CPU masih berjalan hingga 90% +, yang lebih buruk, video menjadi tidak jelas dan hanya memiliki 5fps.

jadi, apa yang salah denganku? Apakah mungkin untuk 1gen B + ke codec perangkat keras?


1
-vcodec copyakan selalu lebih cepat. Ini berarti Anda ingin melakukan nol pemrosesan pada aliran video mp4. Anda tidak perlu transcode video dari mp4 ke mp4 untuk aliran flv. Saya menduga masalahnya adalah aliran audio acc. Coba ganti -acodec accdengan -acodec copy.
Aron

@Ron Saya pikir saya sudah menggunakan "-acodec copy". Ini memperingatkan sth seperti "flv not xxxx aac"
Wayne Chen

Coba gunakan -analih-alih -acodec copysebagai langkah debug. Ini harus menghapus audio ... jika berfungsi, itu karena langkah transcode audio Anda terlalu lambat.
Aron

@Ron berpikir, saya akan mencobanya nanti. apa yang sebenarnya ingin saya dapatkan adalah menurunkan penggunaan CPU.
Wayne Chen

vcodec copyseharusnya sudah memberi Anda penggunaan CPU serendah mungkin untuk streaming video (penggunaan 0% karena hanya menyalinnya). Masalah Anda BUKAN codec video.
Aron

Jawaban:


0

Saya pikir saya menjalankan apa yang Anda cari.
Saya menggunakan pengaturan saya untuk melakukan streaming dari PC saya di ~ 50000KBit ~ 720p H264 lokal ke RaspberryPi3 saya yang menjalankan server nginx / rtmp dan mengeruk arus melalui ffmpeg dengan akselerasi perangkat keras dan mengirimkan aliran ini daripada berkedut pada 3500KBit.
Apakah itu yang Anda cari? Pada tampilan pertama saya pikir Anda kehilangan percepatan decoding.

Stream # 0: 1 -> # 0: 0 (h264 (nativ) -> h264 (h264_omx))
Anda men-decode stream dengan codec perangkat lunak dan mengkodekan lagi dengan codec perangkat keras. codec perangkat lunak menyebabkan cpu berdegah.

Stream # 0: 1 -> # 0: 0 (h264 (h264_mmal) -> h264 (h264_omx))
Dengan cara ini Anda menggunakan akselerasi perangkat keras h264_mmal untuk memecahkan kode dan akselerasi perangkat keras h264_omx untuk menyandikan.

Saya wor pada skrip instalasi untuk pengaturan ini dan bersedia untuk berbagi. Jika itu yang Anda cari, saya dapat membantu Anda.
Anda dapat melihat hasilnya di saluran kedutan saya https://www.twitch.tv/jeezz


Terima kasih atas bantuan Anda. Saya men-debug kemarin dengan -an, penggunaan CPU diturunkan ke normal. Jadi transcode audio adalah kunci dari pertanyaan saya. Jadi saya hanya untuk transcode audio ke aac pada PC, masalahnya hilang. Terima kasih semuanya.
Wayne Chen
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.