0

アプリでいくつかのオーディオファイル(mp3、wav、.. etc)を使用していSystem.Windows.Mediaます。名前空間のMediaPlayerクラスを使用していましたが、サウンドファイルの長さの計算に問題がありました。フォームは実際には小さなメディアプレーヤー、それはaTrackBarと通常ComboBoxnextボタンを持っています..私はこのコードを使用してサウンドファイルの長さを取得し、トラックバーの最大値を決定しました:previousplay

private void MusicComboBox_SelectedIndexChanged(object sender, EventArgs e)
{   
  System.Windows.Duration duration = Player.NaturalDuration;
  SeekBar.Value = 0;
  Player.Open(new Uri(soundEffectPackage.GetMusicAt(MusicComboBox.SelectedIndex)));
  if(duration.HasTimeSpan)
    SeekBar.Maximum = duration.TimeSpan.Seconds;  
}

これは一部のファイルでのみ正常に機能しますが、他のファイルにはないTimeSpanため、ifが実行されません。また、ifを削除すると、最初に確認する必要があるかどうかを確認する必要があるという例外が発生します。これHasTimeSpanは真実であり、次に進みます。

どうすればこれを修正できますか?オーディオファイルの長さを取得するにはどうすればよいですか?そして、それらは期間とはどういう意味ですか?

どんな助けもいただければ幸いです、ありがとう:)

4

1 に答える 1

1

これによると

MediaOpenedイベントが発生するのを待つ必要があります。その後、NaturalDurationが使用可能になります。値が使用可能かどうかを確認するには、NaturalDuration.HasTimeSpanプロパティを使用できます。

しかし、オーディオとビデオファイルを操作するための最良の選択は「Fmod.dll」です。これはオーディオファイルを操作するための多くの特権を持っています

于 2012-08-01T17:52:32.077 に答える