DOBON.NET DOBON.NETプログラミング掲示板過去ログ

AxWindowsMediaPlayerで再生時間を得る

環境/言語:[OS : Windows XP / 言語 : C#]
分類:[.NET]

初めて投稿します。

C#でAxWindowsMediaPlayerを使用してwavファイルを再生するとき
playする前に再生時間を表示させる方法をおしえてください。

settings.autoStart = false;
URL = "music.wav";
この後
currentMedia.durationString;
は00:00が返ってくる。

Ctlcontrols.play();を実行した後数十msから数百ms後には
再生時間が返ってくるのは確認しています。

宜しくお願いします。
http://msdn.microsoft.com/en-us/library/dd564790%28VS.85%29.aspx
MSDN の IWMPMedia.duration の解説に以下の記述があります。
> To retrieve the duration for files that are not in the user's library,
> you must wait for Windows Media Player to open the file; that is,
> the current OpenState must equal MediaOpen.
> You can verify this by handling the
> AxWindowsMediaPlayer._WMPOCXEvents_OpenStateChange event or
> by periodically checking the value of AxWindowsMediaPlayer.openState.
以下意訳
> ユーザのライブラリに入ってないファイルの再生時間を取得するには WMP がファイル開く(つまり openState プロパティが MediaOpen になる)のを待たなきゃダメ。
> OpenStatechange イベントを使うか openState を定期的に監視して確認してね。

直接 URL プロパティを使うのではなく、AxWindowsMediaPlayer の newMedia メソッドによってメディアを開けば行けるかもしれません。
Vista/WMP11 で確認したところ、newMedia で取得してから currentMedia に代入する前までなら値が取得できました。

DOBON.NET | プログラミング道 | プログラミング掲示板