開発備忘録

WPF(Xaml + C#)の話題を中心に.Net関連についてのブログです。

MediaPlayer でファイル再生時のノイズ発生回避方法について

前回同様、WPF のMediaPlayer のお話です。
iyemon018.hatenablog.com

今回は楽曲ファイルの読み込み時ではなく、再生時に発生するノイズについてです。
このノイズも必ず発生するものではなく、特定の条件の楽曲ファイルと環境が揃わなければ発生しません。
かなり局所的な問題だと思われますが、とりあえずノイズの発生した環境は以下の通りです。

動作環境

  • OS : Windows 8.1 with Being (x86)*1
  • CPU : Intel Atom CPU Z3735F 1.33GHz
  • メモリ : 2GB
  • 楽曲ファイル : 再生時間300ミリ秒程度。1音目に振幅の大きい(例えばクリック音のような)楽曲に発生しやすい。

開発環境

現象

WPF のMediaPlayer の再生時に”1音目に振幅の大きい楽曲”を再生した場合にノイズが入る。
同じ楽曲を他のメディアプレイヤーで再生してもこの現象は発生しない。
また、動作環境によっては発生しない。
タブレットなどの低スペックPC上で発生するケースが多い。

原因

今のところわかっていません。
MediaPlayer は内部でWindows Media Player を使用しているのでWMPが怪しい気もするのですが、根本的な原因については今もわかっていません。

対策

楽曲ファイルの調整が可能であれば、楽曲ファイルの先頭に無音時間を10ミリ秒程度追加すると解消されます。
この方法であればコードの修正が必要ないため簡単に対応できるのですが、楽曲ファイルを編集できない場合は使えません。
他には、

  • 楽曲再生までに徐々に音量を上げる
  • 楽曲再生前にインターバルを持たせる

なども考えましたが、いずれも確実に修正できるという確証がなかったため試していません。

*1:Windows 10でも発生しますがハードウェアのスペックがわかりませんでした。