1

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 がオンになっていないときにスムーズなオーディオが得られるように、同じメカニズムを複製したいと考えています。リアルタイム オーディオ ストリームに必要以上の遅延を追加したくないため、独自のバッファリングを追加しないようにしています。

4

1 に答える 1

2

ライブ ソースがあり、それと配信されたオーディオを同時に聞くことができる場合、File Writer を追加すると遅延が発生するかどうかを判断できる場合があります。または、 でネゴシエートされたバッファのサイズまたは数が変更される場合がありますDecideBufferSize

メディア サンプルのタイムスタンプにオフセットを追加するなど、プッシュ フィルターに明示的なバッファリングを導入することをお勧めします。Tee フィルターの固有のバッファリングは信頼できない場合があります。納期の変動は避けられません。

最小限のバッファリングまたはバッファリングなしで実行する必要がある場合、より洗練されたアプローチは、ピッチを維持しながらオーディオをストレッチ/圧縮することです。

于 2012-01-13T23:02:18.853 に答える