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:
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?
raspberry-pi
video-streaming
raspbian
Wayne Chen
sumber
sumber
-vcodec copy
akan 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 acc
dengan-acodec copy
.-an
alih-alih-acodec copy
sebagai langkah debug. Ini harus menghapus audio ... jika berfungsi, itu karena langkah transcode audio Anda terlalu lambat.vcodec copy
seharusnya sudah memberi Anda penggunaan CPU serendah mungkin untuk streaming video (penggunaan 0% karena hanya menyalinnya). Masalah Anda BUKAN codec video.Jawaban:
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
sumber
-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.