アプリ版:「スタンプのみでお礼する」機能のリリースについて

C#のAxWindowsMediaPlayerからリソースに埋め込まれた動画を読み込みたい

簡易動画プレイヤーと動画ファイルを1つの .exe ファイルにしたいと思っています。

C#から COMコンポーネント AxWindowsMediaPlayer を使用し、リソースに
動画ファイルを埋め込みたいのですが、埋め込んだリソース(byte[]?)を
AxWindowsMediaPlayer へ渡す方法がわかりません。

AxWindowsMediaPlayer.URL にはファイル名等しか指定できないため、
最悪、いったんファイルに書き出すしかないかなと思っていますが、
動画本体は大きいファイルなので出来れば避けたく思います。
他によい方法はありませんでしょうか?

DLLはILMergeで .exe に同梱できることを確認しました。
VS2010, WindowsXP です。

A 回答 (1件)

AxWindowsMediaPlayer ではなく、Windows Media Player のサブコンポーネントである MediaElement クラスの SetSource メソッドと、Assembly クラスの GetManifestResourceStream メソッドを使えばなんとかなります。



http://msdn.microsoft.com/ja-jp/library/cc190669 …
http://msdn.microsoft.com/ja-jp/library/system.r …

・使い方の例

MediaElement media = new MediaElement();
Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("SomeProjectNamespace.SomeVideo.wmv");
media.SetSource(stream);
media.AutoPlay = false;
media.Stop();
media.Play();


ただし SetSource メソッドを持っているのは Silverlight 用のコントロールであり、WPF 用のコントロールは持っていないので、フォームアプリの場合は WebBrowser コントロールを使って Silverlight を埋め込むなどの方法をとる必要があります。

・埋め込み方の例
http://blog.loadlimits.info/2010/01/windows%E3%8 …


なお、WPF の MediaElement クラスの説明に、「アプリケーションでメディアを配布する場合、メディア ファイルをプロジェクト リソースとして使用することはできません」という記述があるので、素直にコンテンツファイルとして出力指定するのが楽だと思います。

http://msdn.microsoft.com/ja-jp/library/system.w …


ちなみに質問するときはターゲット環境(.NET Framework のバージョンなど)を併記しておいたほうがいいです。

この回答への補足

回答ありがとうございます。

Silverlightアプリケーションとして作成、それを表示させるWebBrowserといっしょにビルド、ということでしょうか?

この場合、出来合いのコントロール(再生ボタンやシークバー等)は無く、自前での実装となるのでしょうか? Silverlightの経験が無いため難航しそうな予感がありますが、googleで検索したところ日本語サンプルも結構出てきましたので、方法が無いようであればチャレンジしてみようかと思います。

.NET Framework のターゲットの件は失礼いたしました。2.0か3.0(WindowsXP以降)として考えておりました。WPFということは3.0になりますね。

補足日時:2010/10/26 02:56
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!