ActionScript3.0でUSBカメラを使う

chakemiです。最近、自分もMac Book airを買おうか迷っています。 11インチが魅力的ですが、生粋のWindowsユーザーとしてはBootCampを使いたいところで、HDD容量が128GBではOS2つ利用するには心許なく感じ、購入に踏み出せておりません。。。

本日は、基本的な内容ですが、ActionScript3.0を使ってUSBカメラを扱うときの個人的メモで。

開発環境

  • FlashDevelop3

まずは、書き出すswfについてですが、FlashPlayerはデフォルト24fpsらしいので、frameRateを30fpsに指定します。

1
[SWF(backgroundColor=0xFFFFFF, width="320", height="240", frameRate="30")]

ここで、幅、高さを指定しているのは、カメラの映像を320x240で表示したいだけです。 SpriteクラスはMovieClipクラスの代替機能でタイムラインを持ちません。タイムラインを必要としないオブジェクトに適したクラスとなります。

1
public class Cam extends Sprite {

次にCameraクラスのインスタンスを生成し、getCamera()メソッドでPCに接続されたカメラの参照を取得します。 複数カメラが接続されている場合、getCamera()はindexの順番に参照します。 明示的に指定したい場合は、getCamera(“1”)などのようにindexの値を渡してあげます。

setMode()でカメラのキャプチャサイズ、frameRateを指定します。その際、カメラ側に指定した設定のモードが存在しない場合、近似値になります。

1
2
3
4
5
6
7
camera = Camera.getCamera();

if (camera != null)
{
     camera.setMode(320, 240, 30);
     video = new Video(camera.width, camera.height);
     video.attachCamera(camera);

あとは、描画のためのcameraインスタンスをvideoインスタンスにアタッチして、さらにSpriteクラスのaddChild()メソッドで表示。

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
29
30
31
32
33
34
package
{
     import flash.display.Sprite;
     import flash.media.Camera;
     import flash.media.Video;



     [SWF(backgroundColor=0xFFFFFF, width="320", height="240", frameRate="30")]
     public class  Cam extends Sprite
     {
          private var camera:Camera;
          private var video:Video;



          function Cam()
          {
               camera = Camera.getCamera();

               if (camera != null)
               {
                    camera.setMode(320, 240, 30);
                    video = new Video(camera.width, camera.height);
                    video.attachCamera(camera);

                    addChild(video);
                    video.x = 0;
                    video.y = 0;
               }

          }
     }
}

とりあえず、カメラを使う基本でした。。。 これだけじゃ面白くもないので、カメラから画像情報を取り出してなにかやらかそうと思います。

Comments