Verschieben von Audio über ein lokales Netzwerk mit GStreamer

Ich muss Echtzeit-Audio zwischen zwei Linux-Computern verschieben, auf denen (meine) benutzerdefinierte Software ausgeführt wird, die auf Gstreamer aufbaut. (Die Software hat bereits eine andere Kommunikation zwischen den Maschinen über ein separates TCP-basiertes Protokoll. Ich erwähne dies, wenn zuverlässige Außerbanddaten einen Unterschied für die Lösung darstellen.)

Der Audioeingang ist ein Mikrofon / Line-In am sendenden Gerät und der normale Audioausgang als Senke am Ziel. am wahrscheinlichsten sind alsasrc und alsasink, obwohl ich zum testen den audiotestsrc anstelle eines echten mikrofons verwendet habe.

GStreamer bietet eine Vielzahl von Möglichkeiten, um Daten über Netzwerke zu übertragen - RTP, RTSP, BIP-Payloading, UDP- und TCP-Server, Clients und Sockets usw. Es gibt auch viele Beispiele im Internet für das Streamen von Audio und Video - aber keines davon scheint in der Praxis für mich zu funktionieren. Entweder kann die Ziel-Pipeline keine Obergrenzen aushandeln, oder ich höre ein einzelnes Paket, und dann bleibt die Pipeline stehen, oder die Ziel-Pipeline wird sofort beendet, wenn keine Daten verfügbar sind.

In allen Fällen teste ich auf der Kommandozeile nur gst-launch. Es ist keine Komprimierung der Audiodaten erforderlich - Raw-Audio oder einfache WAV-, uLaw- oder aLaw-Codierung sind in Ordnung. was wichtiger ist, ist die geringe Latenz.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage