読者です 読者をやめる 読者になる 読者になる

酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

Windows PhoneでMediaPlayerLauncherを使って動画を再生する

概要

動画再生を行うには、Microsoft.Phone.Tasks名前空間のMediaPlayerLauncherクラスを使用します。URLを渡すとストリーミング再生や、アプリケーションと同じディレクトリにある動画ファイルや、分離ストレージ(IsolatedStorage)に保存している動画ファイルの再生を行うことが出来ます。

名前空間:Microsoft.Phone.Tasks

System.Object
 +–Microsoft.Phone.Tasks.MediaPlayerLauncher

Tips

ローカルストレージのwmvファイルを再生する

MediaのURLを設定した後は、MediaPlayerLauncherを表示するには、 Showメソッドを使用します。

まず、最初にhttpスキームのネットワーク上にある動画ファイルを再生する方法についてご紹介します。

    var movieUrl =
        new Uri("http://support.microsoft.com/support/mediaplayer/wmptest/samples/new/mediaexample.wmv");
    
    var task = new Microsoft.Phone.Tasks.MediaPlayerLauncher()
                   {
                       Controls = MediaPlaybackControls.All,
                       Location = MediaLocationType.None,
                       Media = movieUrl
                   };
    task.Show();

上記のコードを実行してみました。Windows Phone エミュレータの頃からですが、エミュレータ上では再生が上手くいきませんでした。実機では問題無く再生が行えています。

f:id:ch3cooh393:20150905165134p:plain

次に、コンテンツとしてxapに動画ファイルを含んでいる際の、動画再生する方法をご紹介します。Locationプロパティに`MediaLocationType.Install`を設定してください。

    var task = new Microsoft.Phone.Tasks.MediaPlayerLauncher()
                   {
                       Media = new Uri("filename.wmv", UriKind.Relative),
                       Location = MediaLocationType.None
                   };
    task.Show();

分離ストレージに保存した動画ファイルを閲覧する際には、LocationプロパティにMediaLocationType.Dataを設定します。

Microsoftのサイトに置かれているサンプルのwmvファイルを再生させる

MediaPlayerを操作する事が出来ます。

ちなみにサンプルのWMVは、MSのサイト(http://support.microsoft.com/kb/316992/ja)から拝借。

  private void btnMediaPlayerLauncher_Click(object sender, RoutedEventArgs e)
  {
      var task = new Microsoft.Phone.Tasks.MediaPlayerLauncher()
      {
          Media = new Uri(@"http://support.microsoft.com/support/mediaplayer/wmptest/samples/new/mediaexample.wmv"),
          Controls = Microsoft.Phone.Tasks.MediaPlaybackControls.All
      };
      task.Show();
  }

動かしてみました。動画とコントロール部分が何故か同時に表示できない現象が発生していたけど、なんとか表示されているみたいです。(ノートPCだからオーバーレイがちゃんと映ってないっぽい?)


参照

関連記事