やりたいことは以下。
- 動画を再生したい。
- 起動すると、フルスクリーンで停止。
- Enterキー押下で動画再生。
- 同じフォルダ内の動画ファイルをファイル名順に再生。
- 再生終了後、黒画面で再生停止。その状態でEnterキー押下で次の動画再生。
- 再生途中Enterキー押下で次の動画再生。
探してみたが、都合良く上記を満たしてくれるプレーヤーが見つからなかった。
ググッてみたところ、「C#でプレーヤーを作ろう!」的な記事を見つけたので、VC++で作ってみることにした。
使用ソフトは「VC++2010」である。
1.動画を再生したい。
「フォームを作ってMediaPlayerを貼り付ければ出来上がり!」的な記事を見かけたので、早速作ってみることにした。プロジェクトを作ってフォームを表示するまでは順調に進んだが、ツールボックスに「WindowsMediaaPlayer」が見つからない。で、ググッてみると、こんな動画が!
ポイントは、
1.ツールボックス内「コンポーネント」を右クリック→「アイテムを選択」
2.COMコンポーネントタブを選択→「WindowsMediaPlayer」にチェックを入れる
3.「コンポーネント」に「WindowsMediaPlayer」が表示される。
フォームに貼り付けて完成。
でもこれだけでは動画再生はできない。
動画を見ると、「URL」に動画のパス+ファイル名を記入すれば良いらしい。
で、URLに動画のパス+ファイル名を記入してビルドすると、無事動画再生できた。
axWindowsMediaPlayer のプロパティに「fullScreen」を「True」にするだけでできた。
ググッてみると、「axWindowsMediaPlayer.Ctlcontrols」で操作するらしい。
「axWindowsMediaPlayer.Ctlcontrols」の型は、「IWMPControls」となっている。
MSDNで「IWMPControls」を漁ってみると、下記インターフェースが有る事が分かる。
■AxWindowsMediaPlayer Object (VB and C#)
■IWMPControls (VB and C#) interface
<<メソッド>>
fastForward
Starts fast play of the media item in the forward direction.
順方向に再生する。
fastReverse
フォームに貼り付けて完成。
でもこれだけでは動画再生はできない。
動画を見ると、「URL」に動画のパス+ファイル名を記入すれば良いらしい。
で、URLに動画のパス+ファイル名を記入してビルドすると、無事動画再生できた。
2.起動するとフルスクリーンで表示
これは簡単。axWindowsMediaPlayer のプロパティに「fullScreen」を「True」にするだけでできた。
3.Enterキー押下で動画再生
現在、アプリケーション実行と同時に動画が再生されてしまう。先ずはこれをどうにかしなければならないググッてみると、「axWindowsMediaPlayer.Ctlcontrols」で操作するらしい。
「axWindowsMediaPlayer.Ctlcontrols」の型は、「IWMPControls」となっている。
MSDNで「IWMPControls」を漁ってみると、下記インターフェースが有る事が分かる。
■AxWindowsMediaPlayer Object (VB and C#)
■IWMPControls (VB and C#) interface
<<メソッド>>
fastForward
Starts fast play of the media item in the forward direction.
順方向に再生する。
fastReverse
Starts fast play of the media item in the reverse direction.
逆方向に再生する。
next
逆方向に再生する。
next
Sets the next item in the playlist as the current item.
プレイリストの次の項目を再生する。
pause
プレイリストの次の項目を再生する。
pause
Pauses playback of the media item.
一時停止
play
一時停止
play
Begins playback of the current media item, or resumes playback of a paused item.
再生
playItem
再生
playItem
Plays the specified media item.
指定メディア再生
previous
指定メディア再生
previous
Sets the previous item in the playlist as the current item.
一つ前再生
stop
一つ前再生
stop
Stops playback of the media item.
停止
<<プロパティ>>
currentItem
Read/write
Gets or sets the current media item in a playlist.
リード/ライト可能
カレントアイテム取得
currentMarker
Read/write
Gets or sets the current marker number.
リード/ライト可能
カレントマーカー取得
currentPosition
Read/write
Gets or sets the current position in the media item in seconds from the beginning.
リード/ライト可能
カレント位置取得
currentPositionString
Read-only
Gets the current position in the media item as a System.String.
リードオンリー
カレント再生位置取得
isAvailable
Read-only
Gets a value indicating whether a specified type of information is available or a specified action can be performed.
リードオンリー
メディアが有効かチェック
これだけ分かれば後はカンタン。
「1.起動時に[stop]する。」と、フルスクリーンにならない。
これは、後回しにする。
停止
<<プロパティ>>
currentItem
Read/write
Gets or sets the current media item in a playlist.
リード/ライト可能
カレントアイテム取得
currentMarker
Read/write
Gets or sets the current marker number.
リード/ライト可能
カレントマーカー取得
currentPosition
Read/write
Gets or sets the current position in the media item in seconds from the beginning.
リード/ライト可能
カレント位置取得
currentPositionString
Read-only
Gets the current position in the media item as a System.String.
リードオンリー
カレント再生位置取得
isAvailable
Read-only
Gets a value indicating whether a specified type of information is available or a specified action can be performed.
リードオンリー
メディアが有効かチェック
これだけ分かれば後はカンタン。
- 起動時に、[stop] する。
- キー入力を監視し、[enter]押下時[play]する。
「1.起動時に[stop]する。」と、フルスクリーンにならない。
これは、後回しにする。
4.同じフォルダ内の動画ファイルをファイル名順に再生。
5.再生終了後、黒画面で再生停止。その状態でEnterキー押下で次の動画再生。
6.再生途中Enterキー押下で次の動画再生。
実行モジュールと同じフォルダに居る動画ファイルを検索し、名前を保持しておけば、これらは難しくない。
とりあえず、1個ずつ修正することにする。
(次回に続く)
完成したもの...
とりあえず動いたが、下記の課題が残った。- 動画停止中、フルスクリーンが解除される。
- フルスクリーン中、「Enter」キーを受け付けない。(通常サイズなら受け付ける)
とりあえず、1個ずつ修正することにする。
(次回に続く)
0 件のコメント:
コメントを投稿