Adobe AIR Flex をだれでも簡単に作成できるパッケージ : ★ 超シンプル FLV プレーヤー ★ VideoDisplay を使って、ムービを簡単に再生できましたが、ムービーをロードした状態からだと、特に難しい事を意識しなくてもWEB カメラを表示できます。ダミーでお好きな画像が初期表示される mp4 等を用意すれば OK です。![]()
![]()
撮影した画像
![]()
Panel を画像化しているので全体が画像化されています。撮影ボタンを押すと、ファイルを保存する為のダイアログが表示されるので、このままではつかいにくいので注意して下さい。
<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:s="library://ns.adobe.com/flex/spark"
initialize="initData();"
usePreloader="true"
showStatusBar="false"
titleIcon="{imgSmile}"
title="最も簡単なカメラのキャプチャ"
skinClass="spark.skins.spark.SparkChromeWindowedApplicationSkin"
>
<fx:Style>
@namespace s "library://ns.adobe.com/flex/spark";
s|Panel {
backgroundColor:black;
}
</fx:Style>
<fx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.logging.targets.*;
import mx.logging.*;
// import spark.skins.spark.*;
[Bindable]
[Embed("smile.png")]
private static var imgSmile:Class;
private var nSize:int = 1;
private var rootObject:WindowedApplication;
private var nativeMenu:ContextMenu;
private var logger:ILogger = Log.getLogger("MyLogger");
import flash.media.Camera;
private var camera:Camera;
import mx.graphics.codec.PNGEncoder;
private var fRef:FileReference;
private var initActive:Boolean = true;
// *********************************************************
// アプリケーションの初期化
// *********************************************************
public function initData():void {
var traceTarget:TraceTarget = new TraceTarget();
traceTarget.level = LogEventLevel.ALL;
traceTarget.filters = ["*"];
traceTarget.includeDate = false;
traceTarget.includeTime = false;
traceTarget.includeLevel = false;
traceTarget.includeCategory = false;
Log.addTarget(traceTarget);
// this.setStyle( "skinClass", SparkChromeWindowedApplicationSkin );
// メッセージ
logger.info( "initData() が実行されました" );
// Mainw.xml の値を変更
// this.height = 600;
// ファイルリファレンスの準備
fRef = new FileReference();
// ファイル保存用ダイアログを表示して保存する
fRef.addEventListener(Event.OPEN, function(e:Event):void {} );
fRef.addEventListener(ProgressEvent.PROGRESS, function(e:ProgressEvent):void {} );
fRef.addEventListener(Event.COMPLETE, function(e:Event):void {
logger.info("保存が完了しました" );
} );
fRef.addEventListener(Event.CANCEL, function(e:Event):void {} );
fRef.addEventListener(Event.SELECT, function(e:Event):void {
logger.info("保存します" );
} );
fRef.addEventListener(IOErrorEvent.IO_ERROR, fRefError );
// *************************************************
// コンテキストメニュー定義
// *************************************************
rootObject = WindowedApplication(mx.core.FlexGlobals.topLevelApplication)
nativeMenu = new ContextMenu();
nativeMenu.hideBuiltInItems();
addContextMenu(
"x 1",
function():void {
changeSize(1);
}
);
addContextMenu(
"x 2",
function():void {
changeSize(2);
}
);
addContextMenu(
"x 0.5",
function():void {
changeSize(3);
}
);
addContextMenu(
"ベースを最大化",
function():void {
myVid.stage.displayState = 'fullScreen';
}
);
addContextMenu(
"ベースを標準",
function():void {
myVid.stage.displayState = 'normal';
}
);
rootObject.contextMenu = nativeMenu;
}
// *********************************************************
// コンテキストメニュー追加
// *********************************************************
public function addContextMenu(
label:String,
listener:Function
):void {
var menuItem:ContextMenuItem;
menuItem = new ContextMenuItem(label);
menuItem.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,listener);
nativeMenu.customItems.push(menuItem);
}
// *********************************************************
// サイズ変更
// *********************************************************
private function changeSize( nSize:int ):void {
switch( nSize ) {
case 1:
myVid.width = myVid.videoObject.videoWidth;
myVid.height = myVid.videoObject.videoHeight;
break;
case 2:
myVid.width = myVid.videoObject.videoWidth * 2;
myVid.height = myVid.videoObject.videoHeight * 2;
break;
case 3:
myVid.width = myVid.videoObject.videoWidth / 2;
myVid.height = myVid.videoObject.videoHeight / 2;
break;
}
}
// *********************************************************
// カメラの初期化
// *********************************************************
public function initCamera():void {
camera = Camera.getCamera();
camera.addEventListener( flash.events.ActivityEvent.ACTIVITY,
function(event:flash.events.ActivityEvent):void {
if ( event.activating ) {
if ( initActive ) {
changeSize(1);
initActive = false;
}
}
});
if ( camera ) {
camera.setMode(600, 400, 10, true);
myVid.videoObject.attachCamera( camera );
}
}
// *********************************************************
// 撮影と保存
// *********************************************************
public function shot():void {
var bitmap:Bitmap = new Bitmap();
// アプリケーションウインドウ全体を画像化
var bitmapData:BitmapData = new BitmapData(this.width, this.height);
bitmap.bitmapData = bitmapData;
bitmapData.draw(this);
var pngEnc:PNGEncoder = new PNGEncoder();
var png:ByteArray = pngEnc.encode(bitmap.bitmapData);
fRef.save( png, "shot.png" );
}
// *********************************************************
// IOエラー
// *********************************************************
public function fRefError( e:IOErrorEvent ):void {
Alert.show(e.text);
}
]]>
</fx:Script>
<s:Panel
title="VideoDisplay でカメラ撮影"
percentHeight="100"
percentWidth="100"
>
<s:VGroup width="100%">
<s:HGroup>
<s:Button
label="カメラ初期化"
click="initCamera();"
width="120"
/>
<s:Button
label="撮影"
click="shot();"
width="120"
/>
</s:HGroup>
<s:VideoDisplay
id="myVid"
autoPlay="false"
source="sample.mp4"
/>
</s:VGroup>
</s:Panel>
</s:WindowedApplication>
|
|
【オワコンの最新記事】
- tiktok > Stable Diffusion : まあ、とにかく凄い今時の頂点系
- Windows 8.1 + Visual Studio 2013 + WebGL + Three.js v65
- Microsoft Visual Studio 2010 のエミュレータは localhost で PC にアクセスできてた。
- Windows Phone で Zune を終了しても実機デバッグはできる( つまり、カメラが使える )
- Windows Phone SDK 8.0 がリリースされました。高橋 忍氏のブログをチェックするといいと思います
- App クラスを介してページ間の参照 / Windows Phone(C#)
- 『Windows8(C#) 2ページテンプレート』で、2ページ目で HttpClient で JSON データをバインドする
- Windows8 の最新版で、C#のテンプレート(Windows ストア)で、ページを追加すると固まるというバグがあるので、テンプレートを作って回避しています。
- 黒子のバスケが始まるまでに Windows Phone の開発環境を作る
- AIR + Papervision3D でメタセコイアの 3D キャラを遊ぶサンプルパッケージ
- Windows8(JavaScript Metro Style 導入) 関連リンク
- Windows 8 Release Preview のコントロールパネルの Flash Player 設定マネージャ
- Windows8 の XMLHttpRequest の POST メソッドのテストの為に、超簡易掲示板を授業中に作成
- AIR+FLARToolkitサンプル開発キット / collada(dae)とメタセコイア(mqo)ローダ実装済
- Windows8 + LiveSDK のサンプルコードの実行
- WindowsConsumerPreview やその他の環境で、Microsoft の Live SDK を試す為の情報
- Adobe AIR Flex をだれでも簡単に作成できるパッケージ : ★ 超シンプル FLV プレーヤー ★
- アプリケーションバーを追加する : Win8 Metro(JS)
- Spark のスキンを使った時のウインドウサイズ変更オペレーション : Adobe AIR Flex
- FLVプレーヤーをもっと簡単に。VideoDisplay を VideoPlayer に変更する : Adobe AIR Flex








撮影した画像
Panel を画像化しているので全体が画像化されています。撮影ボタンを押すと、ファイルを保存する為のダイアログが表示されるので、このままではつかいにくいので注意して下さい。





















