DSPACK コンポーネント ライブラリで構築された Delphi 6 アプリケーションに DirectShow フィルタ グラフがあります。グラフの構造は次のとおりです。
- カスタム プッシュ ソース オーディオ フィルタ
- サンプルグラバー
- Tee Filter (ただし、WAV File Writer と Renderer の両方をオンにした場合のみ)
- レンダラー (優先 PC 出力デバイス)
- WAVファイルライター
レンダラー フィルターと WAV ファイル ライター フィルターの両方がオンになっている場合にのみ、ティー フィルターがグラフに追加されます。それ以外の場合は、オンになっているフィルターのみを Sample Grabber に直接接続します。
オーディオは、リアルタイムでオーディオをストリーミングしている WiFi 接続された RTSP オーディオ サーバーを介して配信されています。Wav File Writer をオンにしないと、ヘッドフォンから出力されるオーディオには、バッファリングされていないオーディオ ストリームに関連する典型的なポンピング サウンドと時折のクリック サウンドが含まれます。不思議なことに、WAV File Writer フィルターをオンにするとすぐに、音声がガラスのように滑らかになります。
私は WAV File Writer のソース コードを持っており、必要に応じて適切な WAV ファイル ヘッダーを出力し、必要に応じてオーディオ バッファーを書き込むタスクを基本的に処理します。特に、レンダラー (フィルター) の上流ではなく、レンダラーに沿ってティー フィルターの端にぶら下がっているピア フィルターであるため、これをオンにすると着信オーディオ ストリームがスムーズになるのは奇妙です。
File Writer フィルターをオンにすると、オーディオ配信がスムーズになるために何が起こっているのか、誰か教えてもらえますか? Tee Filter は固有のバッファリングを行いますか? File Writer がオンになっていないときにスムーズなオーディオが得られるように、同じメカニズムを複製したいと考えています。リアルタイム オーディオ ストリームに必要以上の遅延を追加したくないため、独自のバッファリングを追加しないようにしています。