C#|axWindowsMediaPlayer

 axWindowsMediaPlayerの使い方をググっても情報が少なかったのでメモします。

【準備】

参照設定する。

ツールボックスで右クリック、アイテムの選択

COMコンポーネントタブをクリック

Windows Media Playerをチェック

これでツールボックスにWindows Media Playerが追加されるのでフォームに貼り付ける。

【フォームデザイナでプロパティ設定】

Ctlenabled falseにするとボタン操作が無効になる

stretchToFit 動画、画像がウィンドウのサイズに合わせて変わる。

uiMode none ボタンが表示されない。UIをお好みで実装するならこれ。

    full ボタンが表示される。WMPそのまんま。お手軽。

    invisible 表示されないって意味らしい。設定したら表示が大変なことになった。オーディオ専用ならこれか、Visible = falseでいい気がするけど。

    他に何かあったら教えて下さい。

URL 再生するファイルのパスを渡すとロードして再生の準備をする。settings.autoStart = true なら再生を開始する(既定ではfalseみたい)。

windowlessVideo trueにすると動画が表示されない。用途がわからない。

【メソッドとかプロパティとか】

Ctlcontrols.play() 再生。

Ctlcontrols.stop() 停止。

Ctlcontrols.pause() 一時停止。

Ctlcontrols.fastReverse() 早戻し、出来ないファイル形式があるみたい。

Ctlcontrols.fastForward() 早送り、上に同じ。

Ctlcontrols.currentPosition 再生位置、秒数。

Ctlcontrols.currentPositionString 再生位置、mm:ssの形式。

settings.volume = 0~100 ボリューム

settings.balance = -50~50 左右のバランス

settings.mute 消音。えってぃ動画とか見るなら必須。

status 準備完了とか一時停止とか表示されるあれ。StatusChangeイベントで更新してやるといいみたい。

currentMedia.duration 再生中のファイルの総時間。

他はよくわからなかった。

【シークバーを実装してみる】

 再生位置を更新するイベントがいくら探しても見付かりません。どうやら無い様です。Windows.Forms.Timerを使って定期的に更新することにします。スライドにはTrackBarを使います。

 再生開始したらTimerをStart()する。Intervalは既定の100でいいと思います。Windous Madia PlayerのPlayStateChengeイベントが使えるかも。currentMedia.durationでファイルの長さが得られるのでintにキャストしてTrackBarのMaxValueにセット。

 TimerのTickイベントでCtlcontrols.currentPositionをintにキャストしてTrackBarのValueにセット

 これで再生時間が刻々と更新されます。

 後はTrackBarの操作で再生位置を操作しましょう。

 TrackBarのScrollイベントでTrackBarのValueをdoubleにキャストしてCtlcontrols.currentPositionにセット。

 これだけじゃエレガントに動かないので、操作中は更新を止めましょう。

 TrackBarのMouseDownイベントでTimerをStop()。MouseUpイベントでStart()するとエレガントに動くようになりました。

 以上、WindowsMediaPlayer弄りメモでした。他にも情報がありましたら教えて下さい。

2 thoughts on “C#|axWindowsMediaPlayer

  1. このコントロールは一般のオーディオ、ビデオ再生等が目的のものなのでミリ秒単位での制御は用途外な気がします。他のもっと低レベルなオーディオ関連APIの利用を検討されては如何でしょうか。

  2. ここを参考にtryしたのですが上手く出来ませんでした。サイン波を20mSの間隔で音量をon-offしたいのですが? play()/stop()の繰り返しでは音にクリックノイズが入りNGです。 codingはどう書けばいいのでしょうか? 宜しくお願い致します。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください