XNAメモ – 動画を再生する方法

Posted: 2012年9月24日 カテゴリー: プログラミングメモ, XNA, XNAメモ
タグ:, , , , ,

久しぶりの更新です!・・・もうちょっと頻繁に何か書くようがんばります。

 

今回は、リクエスト内容が合っているのかは判断付きませんでしたが、合っていると思い込み、XNA4で動画を再生する方法を紹介します。(違った場合はご連絡ください)

 

動画を再生するには、プロジェクトにMicrosoft.Xna.Framework.Video への参照を通す必要があります。

 

その為には、ソリューションエクスプローラー内の参照フォルダを右クリックし「参照を足す」をクリックしてください(自分は英語版を使用しているので、出てくる文字があっていない場合はすみません m_ _m)。

 

 

次に「.NET」のタブから、Microsoft.Xna.Framework.Videoを選択肢、プロジェクトに追加してください。

 

次に動画を追加します。これはテクスチャ等と同様コンテントパイプラインで追加できますので、テクスチャア等と同じ手順で追加してください。

 

ここで気をつけなければいけないのは、コンテントパイプラインは、.WMVフォーマット以外の動画はサポートしていません。さらに、WMV9以降の「Main」設定でなければいけませんので、必要な場合はWindows Live Movie Maker等を使用して変換してください。

 

ではココからはコードに移ります。まず、動画の読込先、動画のプレイヤー、描画用のテクスチャアを宣言します。

 

Video m_video; // 再生する動画
VideoPlayer m_videoPlayer; // 動画プレイヤー
Texture2D m_videoTexture; // 描画用テクスチャ

 

次に、動画の読み込みと、初期化をします。

 

protected override void LoadContent()
{
spriteBatch = new SpriteBatch(GraphicsDevice);
m_videoTexture = null;

// 動画の読み込み
m_video = Content.Load<Video>("test");

// プレイヤーのインスタンスを作成
m_videoPlayer = new VideoPlayer();
}

 

次に、Update() 内で動画がまだ再生されていない場合、動画を再生する処理を追加します。

 

// もし動画を再生していなかったら再生する
if (m_videoPlayer.State == MediaState.Stopped)
{
m_videoPlayer.Play(m_video);
}

 

次に、描画処理です。動画の描画には、現在のコマをテクスチャアとして獲得し、それをSpriteBatchで描画します。

 

まず、テクスチャアの獲得です。

 

// 動画が再生中なら
if (m_videoPlayer.State != MediaState.Stopped)
{
// 動画から最新の画像を獲得
m_videoTexture = m_videoPlayer.GetTexture();
}

 

次に、現在のコマを再生します。

 

if (m_videoTexture != null)
{
spriteBatch.Draw(m_videoTexture, screenBounds, Color.White);
}

 

これで、動画が再生されます(読み込みに少し時間が掛かる時があります)。

 

 

後は補足ですが、動画を一時停止、一時停止解除、停止をする場合は、以下のメソッドを呼びます。

 

一時停止;

m_videoPlayer.Pause();

 

一時停止解除;

m_videoPlayer.Resume();

 

停止;

m_videoPlayer.Stop();

 

これらの状態は、Update内で紹介したのと同じ様にm_videoPlayer.Stateで判断できます。

 

今回は以上です。

当分の間何も書いていなかったので気が付きませんでしたが、なんと2万HITを越えました!!!😄

まさかこのブログに人が集まるとは・・・(とは言っても凄いところの一日分ぐらいですが)。

まだまだネタが無いので、何かリクエストがあったらコメントか、メールをお送りください m_ _m

 

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中