オーディオファイルの再生とマージにNAudioを使用している.Net Winformsアプリケーションがあります。NAudio - 奇妙なオーディオ再生をターミナルサーバー経由で接続する
伝統的に、このアプリケーションはPC上で実行されており、オーディオの再生は問題ありません。最近、ターミナルサーバーにログインしているときにリモートでアプリケーションを実行できるようにする要求がいくつかありました。アプリケーションは動作しますが、オーディオの再生が不安定になり、オーディオが途中で再生されなくなることがあります。 Windows Media Playerで同じオーディオファイルを再生すると、不安定ではありません。
単純なテストアプリケーション(以下のコードスニペット)を作成し、ターミナルサーバー接続でオーディオを再生するのと同じ問題を経験しました。
ターミナルサーバーに接続しているときとPCをローカルに接続しているときにオーディオを再生する方法がありますか?または調整が必要な設定がいくつかありますか?
WaveOutEvent wo = new WaveOutEvent();
var wavReader = new WaveFileReader(String.Format(@"{0}\{1}", AssemblyDirectory, "5_3712.wav"));
wo.DeviceNumber = comboSelectDevice.SelectedIndex;
wo.Init(wavReader);
wo.Play();
の.NET Framework 3.5
のWindows Server 2008 R2
下記のマーク・ヒースの提案に基づいて、あなたに
解決
をありがとう、私はからデフォルトのバッファ時間を増加300ms〜500msの間、ターミナル・サーブから演奏するときの不安定な再生を取り除いた
のDesiredLatency
プロパティは、バッファの持続時間が変更される場所です。マークさんのブログ記事の1から
:。Link
「あなたはまた、ミリ秒単位で測定されたDesiredLatencyを設定することができ この図は、実際にすべてのバッファの合計時間を設定しますので、 実際には、あなたは。将来の NAudioでは、これを BufferDurationプロパティに置き換えることで、混乱を減らすことができます。デフォルトでは、DesiredLatencyは300msです。 は、ほとんどのコンピュータでスムーズな再生を保証する必要があります。 また、NumberOfBuffersをいくつかに設定する2のデフォルト以外のもの 3は本当に価値がある唯一の他の値です。
更新コードサンプル:あなたはそれができますかどうかを確認するために、デフォルトのバッファサイズを増額しようとすることができ
WaveOutEvent wo = new WaveOutEvent();
var wavReader = new WaveFileReader(String.Format(@"{0}\{1}", AssemblyDirectory, "5_3712.wav"));
wo.DeviceNumber = comboSelectDevice.SelectedIndex;
wo.DesiredLatency = 500;
wo.Init(wavReader);
wo.Play();