:C#でWindows Media Playerを使う

2008/02/14

C#から動画再生にWindows Media Playerを使う方法。

C#で動画ファイルを再生する場合、もっとも楽なのがWindows Media Playerを使うこと。
かつてはDirectX SDKにC#で使えるMicrosoft.DirectX.AudioVideoPlayback
というものが存在したが、ある種の問題を抱えたままサポート終了。
動作が軽くて重宝していたのだが、Visual Studio 2005で使うと
デバッグ時に警告が出て不便極まりないので使うのをやめた('A`)

本当は、副音声を入れたDivX動画を再生すると、画面のクリックで
イベントが起こらないので別のものを探したのだが(;・ω・)ゞ



開発環境:Microsoft Visual Studio 2005 & Windows Media Player 11

▼開発環境への取り込み方
1. ツールボックス上で右クリックメニューを出す
2. [アイテムの選択]を実行
3. COMコンポーネントタブを選択
4. Windows Media Playerにチェックを入れる
5. OKボタンを押す

これでツールボックスにWindows Media Playerコントロールが追加される。
これをフォームに貼り付けると、AxWMPLib,WMPLibが参照に追加される。





▼主な使い方(コントロール名をaxWmpとした場合)

・コントロールの外観
axWmp.uiMode = "none";
none = 画面部分のみ。他にmini, fullがある。

・ファイルの読み込み
axWmp.URL = "動画ファイルのフルパス";

・自動再生
axWmp.settings.autoStart = true;

・ボリューム
axWmp.settings.volume = 100;
音量を0~100で設定。
OSの音量とは違うので、コントロールを複数同時に使って
それぞれのボリュームコントロールが可能。

・ミュート
axWmp.settings.mute = true;

・再生
axWmp.Ctlcontrols.play();

・一時停止
axWmp.Ctlcontrols.pause();

・停止
axWmp.Ctlcontrols.stop();

・閉じる
axWmp.close();
ファイルを切り換える場合、閉じないと画面描画が残る。

・シーク
axWmp.Ctlcontrols.currentPosition = 0;
目的の秒数を指定する。double型なので秒数きっちりじゃなくてもOK。

・フルスクリーン
axWmp.fullScreen = true;

・動画解像度の取得
axWmp.currentMedia.imageSourceWidth //幅
axWmp.currentMedia.imageSourceHeight //高さ

・ステータスの取得
axWmp.status
再生中、一時停止など、日本語の文字列が入る。
WMVなどは詳細情報が加わって文字列変化するので要注意。

・再生時間の取得
axWmp.currentMedia.duration
※ファイルを読み込み、ステータスが"再生中"になると取得可能。


以上、自分メモ。再生時間の取得がかなり面倒だった('A`)

2008/02/14 18:00
コンピュータC# Tips

ID:1406

COMMENT

やってみました。ありがとう!
2011/07/02 11:32
お役に立てたなら何よりです(*゚ー゚)
2011/07/02 23:47
分り易い!
♪♪アリd(*´□`*)bガトー♪♪
2011/10/31 10:17
ご活用ください(*゚ー゚)
2011/10/31 23:13
とても参考になりました。
2011/11/22 23:42
参考になりましたー!
2013/05/20 15:32
ありがとうございます。
2015/12/31 07:10

ADD COMMENT

TRACKBACK LIST


3流プログラマのメモ書き
(VB.Net)DirectShowとWindowsMediaPlayerコントロールで動画を再...: 1年弱ほどまえに作ったサンプルです。 .Netから直接DirectShowを利用するのと、WindowsMediaPlayerコントロールを利用して動画再生したときの状態を比較するために作りました。 WindowsMediaPlayerコントロールを使うと一時停止や音量などを操作するUIはついてくるのですが、明らかにWMPを使ってるのがバレバレです。また、WMPのバージョンにも左右されますしね。 一方のDirectShowを使う場合はかなりややこしいので扱うには...
2009/01/22 01:01

TRACKBACK URL


http://www.gan.st/gan/blog/action.php?action=plugin&name=TrackBack&tb_id=1406