2013年9月15日日曜日

動画再生アプリを作ってみた。

必要に迫られて、動画再生アプリを作ってみた。


やりたいことは以下。


  1. 動画を再生したい。
  2. 起動すると、フルスクリーンで停止。
  3. Enterキー押下で動画再生。
  4. 同じフォルダ内の動画ファイルをファイル名順に再生。
  5. 再生終了後、黒画面で再生停止。その状態でEnterキー押下で次の動画再生。
  6. 再生途中Enterキー押下で次の動画再生。

探してみたが、都合良く上記を満たしてくれるプレーヤーが見つからなかった。
ググッてみたところ、「C#でプレーヤーを作ろう!」的な記事を見つけたので、VC++で作ってみることにした。

使用ソフトは「VC++2010」である。



1.動画を再生したい。

「フォームを作ってMediaPlayerを貼り付ければ出来上がり!」的な記事を見かけたので、早速作ってみることにした。

プロジェクトを作ってフォームを表示するまでは順調に進んだが、ツールボックスに「WindowsMediaaPlayer」が見つからない。で、ググッてみると、こんな動画が!


ポイントは、

1.ツールボックス内「コンポーネント」を右クリック→「アイテムを選択」



2.COMコンポーネントタブを選択→「WindowsMediaPlayer」にチェックを入れる

3.「コンポーネント」に「WindowsMediaPlayer」が表示される。


フォームに貼り付けて完成。


でもこれだけでは動画再生はできない。
動画を見ると、「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 

    Sets the next item in the playlist as the current item.

    プレイリストの次の項目を再生する。

pause 

    Pauses playback of the media item.

    一時停止

play 

    Begins playback of the current media item, or resumes playback of a paused item.

    再生

playItem 

    Plays the specified media item.

    指定メディア再生

previous 
    
    Sets the previous item in the playlist as the current item.

    一つ前再生

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] する。
  2. キー入力を監視し、[enter]押下時[play]する。
でも問題があった。
「1.起動時に[stop]する。」と、フルスクリーンにならない。
これは、後回しにする。



4.同じフォルダ内の動画ファイルをファイル名順に再生。

5.再生終了後、黒画面で再生停止。その状態でEnterキー押下で次の動画再生。

6.再生途中Enterキー押下で次の動画再生。

実行モジュールと同じフォルダに居る動画ファイルを検索し、名前を保持しておけば、これらは難しくない。



完成したもの...

とりあえず動いたが、下記の課題が残った。


  1. 動画停止中、フルスクリーンが解除される。
  2. フルスクリーン中、「Enter」キーを受け付けない。(通常サイズなら受け付ける)

とりあえず、1個ずつ修正することにする。
(次回に続く)

0 件のコメント:

コメントを投稿