2016-09-06 22 views
0

オーディオファイルの再生とマージに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(); 

答えて

1

。または、DirectSoundOutを試して差があるかどうかを確認することもできます。アプリケーションに.NETガベージコレクションが発生している可能性のあることはありますか?

関連する問題