2017-06-12 19 views
1

C#でWPFとNAudioでオーディオプレーヤーを作成しています。 コンピュータのパフォーマンスが低下するたびに、音声は非常に遅くなります。私はこれがSpotifyやWindows Media Playerのような類似のアプリケーションの場合ではないように見えることに気付きました。重いCPU負荷でオーディオの遅れを防ぐ

オーディオスレッドのパフォーマンスを向上させるにはどうすればよいですか?他のスレッドより優先させる方法はありますか?

編集:コード

WavePlayer = new WaveOut(); 
source = new AudioFileReader(Filepath) 
WavePlayer.Init(source); 
WavePlayer.Play(); 
+0

ソースコードを提供できますか? – mjwills

+0

私の質問に関連するコードを追加しましたが、実際にはあまり表示されません。 –

+1

「私のコンピュータのパフォーマンスは低いです」と正確にはどういう意味ですか?あなたの全体のPCは、CPUをかなり上回っていますか?それとも、100%CPU使用率で動作するアプリケーションですか?あなたの 'WavePlayer'も別のスレッドで動作しているのですか、それともメインスレッドで実行していますか? – bassfader

答えて

2

デフォルトでは、リサイズ/ WPFのアプリで、WaveOutはオーディオバッファを埋めるためにUIスレッドを使用します。代わりにWaveOutEventを使用すると、その作業を行うバックグラウンドスレッドが作成されます。 WasapiOutDirectSoundOutもこのように動作します。

タイムリーにバッファを埋めることができない場合は、音声で吃音/ドロップアウトが発生することに注意してください。したがって、ドライバの切り替えモデルがうまく動作しない場合は、オーディオコードを最適化するか、バッファの持続時間を長くする必要があります。

関連する問題