私は、DSPACKコンポーネントライブラリで構築された私のDelphi 6アプリケーションにDirectShowフィルタグラフを持っています。次のようにグラフの構造は次のとおりです。DirectShowフィルタグラフにレンダラを追加すると、オーディオ入力がグラフに滑らかに表示されるのはなぜですか?
- カスタムプッシュソースオーディオフィルタ
- サンプルグラバー
- ティーフィルター(私はWAVファイルのライターとレンダラの両方をオンにしたときのみ)
- レンダラー(有利なPCの出力デバイス)
- WAVファイルライターは
ティーフィルターは、私がを持っている場合にのみ、グラフに追加されますレンダラーとWAVファイルライターフィルターが両方ともオンになっています。それ以外の場合は、がであるフィルタのみを直接サンプルグラバに接続します。
オーディオは、リアルタイムでストリーミングオーディオであるWiFi接続のRTSPオーディオサーバーで配信されています。 がWavファイルライタをオンにしていないと、ヘッドフォンから出力される音声に、典型的なポンピングとバッファリングされていないオーディオストリームに関連するクリック音があります。奇妙なことに、WAVファイルライターフィルターをオンにすると、オーディオはガラスのように滑らかになります。
私はWAVファイルライターのソースコードを持っており、必要なときに適切なWAVファイルヘッダーを出力し、必要以上にオーディオバッファを書き込むというタスクを基本的に処理します。だから、私はそれをオンにすることは、特にそれがレンダラ(フィルタ)の上流ではなく、レンダラと一緒にティーフィルタの終わりにぶら下がっているピアフィルタであるため、着信オーディオストリームをスムーズにするのが奇妙なことがわかります。
File Writerフィルタをオンにしたときに、オーディオ配信をスムーズにするために何が起こっているか教えていただけますか?ティーフィルタは固有のバッファリングを行いますか?私は、File Writerがオンになっていないときにスムーズなオーディオができるように、同じメカニズムを複製したいと思います。私は私が持っているよりもリアルタイムのオーディオストリームにそれ以上の遅延を加えたくないので、私自身のバッファリングを追加することを避けようとしています。
おそらく本当の質問は、オーディオが最初に不鮮明だった理由でしょう。オーディオレンダラーの統計情報はあなたにヒントを与えることができます。 –