Community Open Day 2013 用のネタの続き
Acer w500 に Windows 8 を入れて、Vaio のノートを Windows 8 に変えてから常々悩んでいたのが、セカンドモニタ(実際にはセカンドPC)への動画表示です。自宅で作業をしているのもあり、PCファンの音を消すためもあり、動画を流し続けていることが良くあります。本体のPCパワーを喰われたくないので、ノートPCかタブレットPCで動かしていることが多いのですが、ちょっと動画の切り替えが面倒。動画はストア版のVideoで動かします。*.mp4か*.aviであれば、そのまま表示できるのでこれで。*.mkv の場合はちょっとパワーが足りなくて(特に Acer w500 の場合)、ってことで Video で。
さて、ストア版の Video ではいちいちファイルを開くで、*.mp4 を選択しないといけません。
続けて作業をするのに、いちいちピッカーを開くのは面倒です。
なので、もっぱらデスクトップから mp4 を動かすのですが、エクスプローラーのアイコンが小さくて、ちまちま押すが面倒です。大きなアイコンを使えばいいのですが、これもなかなか妙な感じで使いづらい。
そんな訳で、
-
指定フォルダから、さっくりと mp4 を再生させたい
-
Surface RTで動かすからストアアプリで
ってことを考えていた訳です。子供に映画を見せるのに、エクスプローラーから選ぶってのも大変なので、そのたりも考えて。
■真面目な方法を考える
真面目に考えると、「ストアアプリでは実現できません」という結論になります。ストアアプリのセキュリティ上、ビデオファイルの選択はユーザーの手に委ねられるので、これの抜け道はありません。かつ、マイドキュメントやマイピクチャじゃなくて、ネットワークドライブ上(ほかのPCなど)に置かれているファイルはアクセスできません。おしまい、ってな感じですね。
ストアに出したい場合はそこでおしまいなのですが、ストアに出さないのであれば、いろいろ考えられます。
■私的に利用するだけを考える
いくつかアイデアを並べてみると、
-
動画を流すためのストリームサーバーを用意して、ストリームを受けるストアアプリを作る。
-
初回だけ、アプリローカルに保存する動作をさせて、ローカルフォルダから起動する。
-
アプリに動画を含めてしまう。
正式にはストリームサーバーを用意するのが良いのですが、うーん、なんか面倒そうだし良くわかりません(これは、後で調べて実現したいかと)。初回だけコピーってのもいいけど、作りが面倒。なわけで、アプリに動画を含めてしまう方式をとってみました。
ワイドロゴも用意してみました。
プロジェクトに avi ファイルを追加していきました。
画面はこんな感じで。
コードはこんな感じで。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | /// <summary> /// ビデオを再生する /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private async void VideoClick( object sender, RoutedEventArgs e) { string path = "" ; switch ( ( string )((Button)sender).Content) { case "第1話" : path = "hidamari-01.avi" ; break ; case "第2話" : path = "hidamari-02.avi" ; break ; case "第3話" : path = "hidamari-03.avi" ; break ; case "第4話" : path = "hidamari-04.avi" ; break ; case "第5話" : path = "hidamari-05.avi" ; break ; case "第6話" : path = "hidamari-06.avi" ; break ; case "第7話" : path = "hidamari-07.avi" ; break ; case "第8話" : path = "hidamari-08.avi" ; break ; case "第9話" : path = "hidamari-09.avi" ; break ; case "第10話" : path = "hidamari-10.avi" ; break ; case "第11話" : path = "hidamari-11.avi" ; break ; case "第12話" : path = "hidamari-12.avi" ; break ; } if (path == "" ) return ; path = @"video\" + path; var file = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFileAsync(path); var ret = await Windows.System.Launcher.LaunchFileAsync(file); } |
■出来上がったファイルを Surface RT に転送する
お手軽私的利用のアプリを早速Surface RTに転送する訳ですが、リモート接続で転送しようとすると video フォルダ内が 2GB ぐらいあって、ちょっとやそっとじゃ終わらない。なので、パッケージを作って転送しています。アプリケーション パッケージのローカルな共有 (Windows ストア アプリ) パッケージを作って、かつインストールします。
で、なんやかやでインストールができると、無事自作アプリからビデオで動画が表示できます。画像がついていないボタンなので内容がわかりづらいですが、子供用に画像をつけてやれば、それっぽいアプリになるかと。
日曜大工気分でプログラムは30分、転送などが1時間(苦笑)というパターンで出来上がるって訳です。