Ich interpretiere Ihren Kommentar als "Verwendung von Pulseaudio ist ok". Ich habe das nicht getestet, aber ich würde Folgendes tun:
Erstellen Sie zunächst eine Pulseaudio-Nullsenke:
pacmd load-module module-null-sink sink_name=icecast sink_properties=device.description=Icecast
In Pulseaudio ist jeder Senke eine .monitor
Quelle zugeordnet, so dass Sie auf diese Weise den Ton an die icecast
Senke ausgeben und in anderen Anwendungen mit der Sendeplatte verarbeiten könnenicecast.monitor
Quelle verarbeiten können.
Wenn ich Sie richtig verstanden habe, möchten Sie den Icecast-Stream auf Ihrem Computer empfangen . Um den Stream an die icecast
Senke auszugeben, machen Sie etwas
mplayer http://your.icecast.server -ao pulse::icecast
Wenn der Icecast-Stream endet, mplayer
wird er auch beendet, also in ein Shell-Skript in ein Unendliches packenwhile
usw.
Ich bin mir nicht sicher, was ich mit dem Teil "Stream to udp via ffmpeg" verstehe. Auf jeden Fall können Sie jetzt lesen aus icecast.monitor
mit
ffmpeg -f alsa -i pulse ...
bei Verwendung von pavucontrol
oder pamcd
zur Auswahl der richtigen Quelle oder ffmpeg
direkt beim Kompilieren mit pulseaudio-Unterstützung
ffmpeg -f pulse -i icecast.monitor ...
Wenn jedoch die Idee "Ich möchte diesen Icecast-Stream auf andere Computer in meinem Heimnetzwerk verteilen" soll, ist es möglicherweise besser, ein Pulseaudio-RTP-Modul zu verwenden als Senke zu verwenden.
Wie gesagt, nichts davon wird getestet, Sie müssen möglicherweise Teile anpassen, damit es funktioniert.
Bearbeiten
Ich bin auch nicht sicher, ob ein ALSA-Dummy-Gerät überhaupt funktionieren würde. Nach meinem Verständnis sind sie wirklich nur "Dummy" -Geräte und bieten keinen Loopback. Sie müssten dafür das snd-aloop
Loopback-Gerät verwenden, und dieses ist ein bisschen schmerzhaft, da Sie ständig Probleme mit der Abtastrate haben.
Sie können also die Pulseaudio-Infrastruktur besser nutzen.