5

NAudioライブラリを使用して、単純なWinFormsオーディオレコーダー/プレーヤーを作成しています。私の問題は、再生が完了したことをどのように知ることができるかです。その後、波の流れを閉じる必要があります。

以下にリストされているPlaybackStoppedイベントがあることを私は知っていました:

wfr = new NAudio.Wave.WaveFileReader(this.outputFilename);
audioOutput = new DirectSoundOut();
WaveChannel32 wc = new NAudio.Wave.WaveChannel32(wfr); 
audioOutput.Init(wc);
audioOutput.PlaybackStopped += new EventHandler<StoppedEventArgs>(audioOutput_PlaybackStopped);
audioOutput.Play();

しかし、このPlaybackStoppedイベントは、を呼び出すことによってのみトリガーできるようaudioOutput.stop()です。再生が完了したかどうかを判断する方法を知っている人はいますか?

私はこの質問のためにオープンソースプロジェクトを作成します、あなたはここでそれを見つけることができます:https ://code.google.com/p/stack-overflow-questions/

4

2 に答える 2

9

PlaybackStopped手動で再生を停止するか、IWaveProvider使用しているReadメソッドが0を返すと、イベントが発生します。ここでの問題は、ソースWaveChannel32ストリームが終了してもデータの戻りが停止しないため、再生が終了しないことです。これPadWithZeroesを修正するには、プロパティをfalseに設定する必要があります。

于 2012-07-01T07:52:13.803 に答える