SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

ASP.NET 3.5 Extensions + ASP.NET MVCフレームワーク

ASP.NET AJAXの開発をさらにサポート「ASP.NET 3.5 SP1」

ASP.NET 3.5 Extensions + ASP.NET MVCフレームワーク(5)

  • X ポスト
  • このエントリーをはてなブックマークに追加

メディアをホストするMediaPlayerコントロール

 Silverlightが.NET開発者以外から注目を集めているのはメディア配信の分野です。特にPlayReadyという新たなDRM(Digital Rights Management:デジタル著作権管理)は既存のFlashユーザーからも注目を集めています。Silverlightを利用する場合、本来は必要なXAMLやJavaScriptの知識がなくとも、プロパティ設定を行うだけでSilverlightを利用したメディアのホストが容易に行うことができるのがMediaPlayerコントロール最大のメリットです。

 ただし、JavaScriptを利用してプレーヤー操作時のイベントを操作できるのもMediaPlayerコントロールのメリットとも言えます。つまり、お手軽にメディアをホストできるが、同時にさまざまな設定も受け付けてくれるというのがMediaPlayerコントロールの魅力と言えます。

 実際にホストした画面はこちらになります(図10~12)。メディアをダブルクリックすることで最大化もできますが、これもMediaPlayerコントロール側で自動設定しているため、ユーザーが何か手を加える必要はありません。

図10 MediaPlayerコントロール動作画面
図10 MediaPlayerコントロール動作画面
図11 最大化表示の画面
図11 最大化表示の画面
図12 チャプター表示画面
図12 チャプター表示画面

 MediaPlayerコントロールがサポートしているメディアファイルは次のとおりです。

  • wmv
  • wma
  • nmp3

 詳細な情報はMSDNに記述されています。興味のある方は参照してください。

 続いて、MediaPlayerコントロールの内、多用するであろうプロパティを以下の表にまとめました。メディアファイルを扱うコントロールなので、必然的にそれに絡んだプロパティが多くなっています。

MediaPlayerコントロールのプロパティと概要
メンバ名 概要
AutoLoad メディアファイルを自動的に読み込むかどうか取得/設定
AutoPlay メディアファイルを開いたときに直ぐ再生するかどうか取得/設定
Chapters メディアファイルのチャプタ一覧を取得。各チャプタはChaptersプロパティのコレクション内にMediaChapterオブジェクトとして、タイトル、開始時間、パスなどを設定
MaxFrameRate 1秒間の最大フレーム数を取得/設定
MediaDefinition チャプタの位置、タイトル、サムネイルのパスなどのメディアソース関連のデータが格納されたXMLファイル(メディア定義ファイル)のパスを取得/設定
MediaSkinSource MediaPlayerコントロールに使用されているスキンを定義する値を取得/設定
MediaSource MediaPlayerのメディアファイルを取得/設定
Muted 既定でミュートにするかどうかを取得/設定
OnClientChapterSelected チャプター選択時に呼び出されるJavaScriptの関数名を取得/設定
OnClientVolumeChanged ボリューム変更時に呼び出されるJavaScriptの関数名を取得/設定
OnPluginLoaded Silverlightが読み込まれている時に呼び出されるJavaScriptの関数名を取得/設定
PlaceholderSource メディアファイル読み込み完了前に表示される.jpg、.jpeg、.pngなどの画像ファイルを取得/設定
SplashScreenSource Silverlightコンテンツの読み込み中に表示されるスプラッシュスクリーンドキュメントのURLを取得/設定
Volume ボリュームの初期値を0 ~ 1の範囲で取得/設定

 MediaPlayerコントロールはあくまで、メディアファイルをSilverlightとしてホストするコントロールです。つまり、Silverlight 2から利用可能なマネージコードで処理を記述するのではなく、JavaScriptファイルに処理を記述することになります。MediaPlayerコントロールには、JavaScriptファイル呼び出しのためのイベントハンドラが数多くあります。

 以下のサンプルでは、メディアファイルの設定と、各種メディアの取り扱いに関する設定のみを行っています。本稿のサンプルでは、メディアファイルはサイズの肥大化につながるので添付していません。サンプルを実行する際には自身で用意したうえで設定を行ってください。

<asp:ScriptManager ID="ScriptManager1" runat="server" >
    <Scripts>
        <asp:ScriptReference Path="~/Chapter.js"     />
    </Scripts>
</asp:ScriptManager>
<asp:MediaPlayer ID="MediaPlayer1" runat="server" Height="402px" Width="520px"
    PluginBackground="AntiqueWhite" OnClientChapterSelected="SelectedChapter"
    AutoLoad="true" AutoPlay="true"
    MediaSource="~/メディアファイル名">
    <Chapters>
        <asp:MediaChapter ThumbnailSource="~/チャプター画像" Position="8"     />
        <asp:MediaChapter ThumbnailSource="~/チャプター画像" Position="38"     />
        <asp:MediaChapter ThumbnailSource="~/チャプター画像" Position="98"     />
        <asp:MediaChapter ThumbnailSource="~/チャプター画像" Position="164"     />
    </Chapters>
</asp:MediaPlayer>

 プロパティ設定の部分なので、ご覧いただければ分かると思います。注目点はScriptManagerコントロールのScriptsコレクションにJavaScriptファイルの指定を行っている点です。OnClientChapterSelectedプロパティで設定されたSelectedChapter関数は、チャプター選択時にChapter.jsファイル内のSelectedChapter関数を呼び出して実行しています。

 肝心のSelectedChapter関数はアラートを呼び出しているだけです。

function SelectedChapter(sender, chapterEventArgs) {
    alert("選択したチャプターから再生を開始します。");
}

 以上の設定で、チャプターを選択した場合には、「選択したチャプターから再生を開始します。」というアラートが出た後、チャプター再生が行われるページの完成です。

次のページ
SilverlightをホストするSilverlightコントロール

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
ASP.NET 3.5 Extensions + ASP.NET MVCフレームワーク連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト ナオキ(ナオキ)

WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS Twitter: @yyamada(公式)、@yyamada/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/3670 2009/03/18 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング