Ich versuche, Live-Audio über ein ffmpeg
externes USB-Mikrofon zu streamen . Ich habe dieses Tutorial beinahe befolgt
Ich musste einige Schritte anpassen, aber schließlich gelang es mir, den Stream mit folgendem Befehl von meinem Laptop zu empfangen:
ffmpeg -f oss -i /dev/dsp1 -acodec libmp3lame -ab 32k -ac 1 -re -f rtp rtp://192.168.28.116:1234
Die CPU ist fast zu 100% ausgelastet, ich habe zwei Sekunden lang einen schlechten Sound und nach nichts ... Ich sehe in Wireshark, dass das Board kontinuierlich Frames sendet.
Hat jemand Ideen, um die CPU-Auslastung zu senken?
Antworten:
Um Ihre spezielle Frage zu beantworten, können Sie die CPU reduzieren, indem Sie den Befehl arecord in ffmpeg leiten:
Sie müssen plughw: 1,0 durch Ihre spezifische Soundkarte ersetzen. Informationen finden Sie unter arecord -l. Auf meinem Rasp Pi ging es von ~ 95% CPU auf ~ 35%.
quelle
ALSA-Eingang
Eine Alternative ist, über ALSA zu gehen. Ein ähnlicher Befehl wie oben wäre
Ich bin nicht sicher, wie sich dies auf die CPU-Auslastung auswirkt.
quelle
Dies funktioniert und reduziert die CPU-Auslastung:
Achten Sie darauf, die Standardeinstellung zu ersetzen: CARD = U0x46d0x819 durch Ihre Mikrofon-ID (erhalten von arecord -l) oder von Ihnen angegeben
-i hw:0,0
(oder von welchem Gerät auch immer).Ich hatte ein ähnliches Problem: Die MP3-Kodierung beanspruchte über 90% der CPU-Leistung und konnte mit dem Audio nicht mithalten. Deshalb habe ich sie auf die MP3-Kodierung umgestellt. Dies verbrauchte ungefähr 15-18% der CPU (gemessen vi
top
) und strömt reibungslos zu VLC in meinem LAN. Es wäre ein perfekter Babyphone oder was auch immer. Es gibt nur etwa eine Sekunde Verzögerung, die die Pufferung am VLC-Ende ist.Hinweis: Die IP-Adresse ist eine Multicast-Adresse ([224-239] .xyz). Sie müssen es nicht auf ein bestimmtes Netzwerkgerät in Ihrem LAN richten, und Ihr Breitbandrouter hält den Datenverkehr lokal (standardmäßig).
quelle
Sie können die CPU-Auslastung erheblich reduzieren, indem Sie die Audio-Abtastrate des Eingabegeräts (
-ar 8000
vorher-f alsa
) und die Codec-Audio-Bitrate auf 128k (-b:a 128k
) einstellen . Auch die ironische Reduzierung der Anzahl der Kanäle (-ac 1
) schien die CPU-Auslastung zu erhöhen, so dass ich festgestellt habe, dass dieser Befehl mit ziemlich niedriger CPU ausgeführt wird:Man muss jedoch bedenken, dass dies auch von den Fähigkeiten der Capture-Hardware und den Versionen von ffmpeg / avconv abhängt.
quelle