Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

カメラとマイクを使った新しいユーザー体験

Silverlight 4で作る新しいRIAアプリケーション(2)

  • LINEで送る
  • このエントリーをはてなブックマークに追加

ダウンロード sample.zip (1.8 MB)

 本連載では、Silverlight 4で提供された機能を適宜コードにあわせて解説します。Silverlight 4では、ユーザーの投票により多くの機能が実装されました。今回はその中から、メディアの新機能であるWebカメラとマイクについて解説します。

目次

はじめに

 Silverlight 4ではユーザーの投票により多くの機能が実装されました。今回はその中から、メディアの新機能であるWebカメラとマイクについて解説します。

カメラとマイクを使ったユーザー体験

 ここ数年、SkypeやLiveMessengerなどのカメラを使ったチャットや、カメラに映る現実世界をリアルタイムに合成する拡張現実などが出てきたことで、一般的なネットユーザーにもカメラやマイクといったデバイスが広く普及しました。最近では、ソーシャルコミュニケーションのツールとして、カメラやマイクは欠かせないデバイスになっています。

 ユーザーがSilverlightに望んだことのトップの項目に、カメラとマイクのサポートがありました。Silverlight 3まででもHTML-DOM連携を使うことで実現は可能でしたが、Silverlight 4ではユーザーの要望が反映され、正式にサポートされることになりました。

 これにより、カメラで撮影中の画像や動画、音声をSilverlightの任意のオブジェクトに表示したり、ファイルとして保存したり、入力された音声によって処理を分岐させたりといったことが、Silverlightだけで行えるようになりました。

【参考】拡張現実

 カメラを使った面白い研究に拡張現実(AR)という分野があります。これはiPhoneのアプリケーションの「セカイカメラ」などで使われている技術で、最近ではニュースで取り上げられるようになったのでご存知の方も多いと思います。

 マイクロソフトが2009年のTechEdなどで紹介していた次のビデオでは、2019年のビジョンとして提供してこのARの技術が存分に盛り込まれています。

 今はまだ、カメラを通して現実世界を拡張することしかできませんが、今後が楽しみな技術の1つです。SilverlightでARを体験するには、CodePlexで提供されているSilverlight用のARToolkit を利用するのが一番の近道でしょう。

 また、NyARToolkitは、もともとC++で書かれたARToolkitをJavaで動かすよう実装されたクラスライブラリで、Java以外にもFlashや.NET/CompactFramework、Androidといったプラットフォームで同じように動作します。

カメラとマイクの概要

 Silverlight 4では、あらかじめコンピュータにインストールされたカメラやマイクを操作するクラスが用意されています。これらのクラスを利用することで、C#やVisual Basicからカメラやマイクのキャプチャーを開始したり、指定した形式でファイルを保存したりできます。

 表1に、Silverlight 4で用意されているカメラとマウスを操作するクラスの一覧を示します。

表1 カメラとマウスを操作するためのクラス群
クラス名 概要
CaptureDeviceConfiguration インストールされているデバイスの取得、ユーザーにデバイスを利用するための許可を取る機能を提供する
VideoCaptureDevice カメラなどの画像デバイスを表す
AudioCaptureDevice マイクなどの音声デバイスを表す
CaptureSource 関連付けられたデバイスをアプリケーションで操作する機能を提供する
VideoSink キャプチャーしたビデオ形式のメディアを処理するための機能を提供する抽象クラス
AudioSink キャプチャーしたオーディオ形式のメディアを処理するための機能を提供する抽象クラス

 これらのクラスを用いてSilverlightにおけるカメラとマイクの扱い方を簡単に図解すると、図1のようになります。

図1 Silverlightのカメラとマイクの扱い方
Silverlightのカメラとマイクの扱い方

 つまり、Silverlightでカメラとマイクを利用するには、下記のような手順が必要になります。

  1. ユーザーの許可を取る
  2. カメラやマイクをキャプチャーデバイスに設定する
  3. ブラシやシンクに関連付ける
  4. メディアを表示する

 手順の番号は図1の番号を示します。

【参考】ブラシとシンク

 ブラシは、Silverlightオブジェクトの領域を塗りつぶすためのクラスです。例えば、色を指定してオブジェクトを塗りつぶす場合はSolidColorBrushクラスを利用し、今回のようにビデオでオブジェクトを塗りつぶす場合は、VideoBrushクラスを利用することで簡単にオブジェクトを塗りつぶすことができます。

 ブラシに関する詳しい記述は、MSDNのサイトを確認してください。

 シンク(Sink)は「流し台」などと訳されるため、プログラムでは「データをためこむ場所」という意味で使われることが多いです。後述するVideoSinkクラスやAudioSinkクラスも、カメラやマイクなどのデバイスで取得したデータを一時的にためこむための機能を提供するクラスになります。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

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

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XMLD...

  • WINGSプロジェクト かるあ (杉山 洋一)(カルア(スギヤマ ヨウイチ))

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

バックナンバー

連載:Silverlight 4で作る新しいRIAアプリケーション

もっと読む

All contents copyright © 2005-2018 Shoeisha Co., Ltd. All rights reserved. ver.1.5