Saya mencoba streaming audio langsung menggunakan ffmpeg
dan mikrofon USB eksternal. Saya mengikuti hampir tutorial ini
Saya harus menyesuaikan beberapa langkah tetapi akhirnya, saya berhasil menerima aliran laptop saya menggunakan perintah ini:
ffmpeg -f oss -i /dev/dsp1 -acodec libmp3lame -ab 32k -ac 1 -re -f rtp rtp://192.168.28.116:1234
CPU hampir 100%, saya memiliki suara yang buruk selama dua detik dan setelah tidak ada ... Saya melihat di Wireshark bahwa papan mengirim frame terus menerus.
Apakah ada yang punya ide untuk menurunkan penggunaan CPU?
Jawaban:
Untuk menjawab pertanyaan spesifik Anda, Anda dapat mengurangi CPU dengan mem-pipkan arecord ke ffmpeg:
Anda harus mengganti plughw: 1,0 dengan kartu suara khusus Anda. Lihat arecord -l untuk info. Pada Rasp Pi saya, itu berubah dari ~ 95% CPU menjadi ~ 35%.
sumber
Input ALSA
Salah satu alternatif adalah melalui ALSA. Perintah serupa di atas adalah
Saya tidak yakin bagaimana ini akan mempengaruhi penggunaan CPU.
sumber
Ini berfungsi dan mengurangi penggunaan cpu:
Pastikan untuk mengganti default: CARD = U0x46d0x819 dengan ID mikrofon Anda, (diperoleh dari arecord -l) atau Anda cad menentukan
-i hw:0,0
(atau perangkat apa pun itu).Saya memiliki masalah yang sama - pengkodean mp3 memakan 90% + daya cpu dan tidak bisa mengikuti audionya - jadi saya mengubahnya ke pengkodean mp2. Ini menggunakan sekitar 15-18% CPU (diukur vi
top
) dan streaming dengan lancar ke VLC di LAN saya. Itu akan membuat monitor bayi yang sempurna, atau apa pun. Hanya ada satu atau dua penundaan, yang merupakan buffering pada akhir VLC.Catatan: Alamat ip adalah alamat multicast ([224-239] .xyz). Anda tidak perlu mengarahkannya ke perangkat jaringan tertentu di LAN Anda, dan router broadband Anda akan menjaga lalu lintas lokal (secara default).
sumber
Anda dapat secara signifikan mengurangi beban CPU dengan mengurangi laju sampel audio perangkat input (
-ar 8000
sebelum-f alsa
), dan mengatur laju bit audio codec ke 128k (-b:a 128k
). Juga ironisnya mengurangi jumlah saluran (-ac 1
) tampaknya meningkatkan beban CPU jadi saya telah menemukan perintah ini berjalan di CPU yang sangat rendah:Meskipun kita harus ingat bahwa itu juga tergantung pada kemampuan perangkat keras yang sedang digunakan, dan versi ffmpeg / avconv.
sumber