Warum glättet das Hinzufügen eines Renderers zu meinem DirectShow -Filterdiagramm die Audioeingabe in das Diagramm?

StackOverflow https://stackoverflow.com/questions/8844063

Frage

Ich habe ein DirectShow -Filterdiagramm in meiner Delphi 6 -Anwendung mit der DSpack -Komponentenbibliothek. Die Struktur der Grafik ist wie folgt:

  • Benutzerdefinierte Push -Quell -Audiofilter
  • Probe Grabber
  • TEE -Filter (aber nur, wenn ich sowohl den WAV -Dateiautor als auch den Renderer einschalte)
  • Renderer (bevorzugtes PC -Ausgangsgerät)
  • WAV -Dateischreiber

Der Tee -Filter wird nur dann zum Diagramm hinzugefügt, wenn ich habe beide Der Renderer und der WAV -Dateischreiberfilter schalten sich ein. Ansonsten verbinde ich nur den Filter, den ist direkt an den Probengrabber eingeschaltet.

Der Audio wird über einen WLAN-angeschlossenen RTSP-Audioserver geliefert, der Audio in Echtzeit streamiert. Wenn ich nicht Schalten Sie den WAV -Dateiautor ein, das Audio, das meine Kopfhörer herausbringt, hat das typische Pumpen und gelegentlich Klicken mit einem ungepufferten Audio -Stream. Seltsamerweise wird das Audio als Glas glatt, sobald ich den WAV -Dateiautor einschalte.

Ich habe den Quellcode für den WAV -Dateiautor und er übernimmt im Grunde die Aufgaben, den richtigen WAV -Dateiheader bei Bedarf auszugeben und die Audiopuffer nach Bedarf zu schreiben, nicht viel mehr. Ich finde es seltsam, dass das Einschalten des eingehenden Audiostroms glatt wird, zumal er nicht stromaufwärts des Renderers (Filter) ist, sondern ein Peer -Filter, der neben dem Renderer am Ende des Teefilters hängt.

Kann mir jemand sagen, was passieren könnte, um die Audio -Lieferung glatt zu machen, wenn ich den Filter des Dateischreibers einschalte? Macht der Tee -Filter eine inhärente Pufferung? Ich möchte den gleichen Mechanismus duplizieren, damit ich reibungsloses Audio haben kann, wenn der Dateiautor nicht eingeschaltet ist. Ich versuche es zu vermeiden, mein eigenes Puffer hinzuzufügen, weil ich dem Audio -Stream in Echtzeit nicht mehr Verzögerung hinzufügen möchte, als ich muss.

War es hilfreich?

Lösung

Wenn Sie eine Live -Quelle haben und gleichzeitig sie und das gelieferte Audio anhören können, können Sie möglicherweise feststellen, ob das Hinzufügen von Dateiautor eine Verzögerung einführt, die möglicherweise für den Unterschied verantwortlich ist. Oder es kann eine Größe ändern oder die Anzahl der ausgehandelten Puffer in DecideBufferSize.

Ich würde vorschlagen, explizite Puffer in Ihrem Push-Filter einzubringen, z. Inhärente Pufferung im Tee -Filter kann nicht zuverlässig sein. Variationen der Lieferzeit sind unvermeidlich.

Ein ausgefeilterer Ansatz, wenn Sie mit minimalem oder gar nicht gepuffert werden müssen, könnte darin bestehen, das Audio zu dehnen/zu komprimieren und gleichzeitig die Tonhöhe zu erhalten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top