はじめに
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で用意されているカメラとマウスを操作するクラスの一覧を示します。
クラス名 | 概要 |
CaptureDeviceConfiguration | インストールされているデバイスの取得、ユーザーにデバイスを利用するための許可を取る機能を提供する |
VideoCaptureDevice | カメラなどの画像デバイスを表す |
AudioCaptureDevice | マイクなどの音声デバイスを表す |
CaptureSource | 関連付けられたデバイスをアプリケーションで操作する機能を提供する |
VideoSink | キャプチャーしたビデオ形式のメディアを処理するための機能を提供する抽象クラス |
AudioSink | キャプチャーしたオーディオ形式のメディアを処理するための機能を提供する抽象クラス |
これらのクラスを用いてSilverlightにおけるカメラとマイクの扱い方を簡単に図解すると、図1のようになります。
つまり、Silverlightでカメラとマイクを利用するには、下記のような手順が必要になります。
- ユーザーの許可を取る
- カメラやマイクをキャプチャーデバイスに設定する
- ブラシやシンクに関連付ける
- メディアを表示する
手順の番号は図1の番号を示します。
ブラシは、Silverlightオブジェクトの領域を塗りつぶすためのクラスです。例えば、色を指定してオブジェクトを塗りつぶす場合はSolidColorBrushクラスを利用し、今回のようにビデオでオブジェクトを塗りつぶす場合は、VideoBrushクラスを利用することで簡単にオブジェクトを塗りつぶすことができます。
ブラシに関する詳しい記述は、MSDNのサイトを確認してください。
シンク(Sink)は「流し台」などと訳されるため、プログラムでは「データをためこむ場所」という意味で使われることが多いです。後述するVideoSinkクラスやAudioSinkクラスも、カメラやマイクなどのデバイスで取得したデータを一時的にためこむための機能を提供するクラスになります。