Flexの映像をJpegに書き出し
Flexでの映像をPHPにバイナリ(JPEGエンコ)で送ってPHP側でファイル保存します。
Flex3にはJPEGEncoderっていうBitmapdataをJPEGにエンコードしてくれるクラスがあり、エンコードされたものをPOSTでPHPに送ることでJPEG保存することができます。
今回はせっかくなのでFLV再生されているものからJPEGに変換してみました(FLV2JPEGみたいな)。
ですので、Webカメラを使用すれば、おそらく簡易カメラ(JPEGで保存)が作成できると思います。
サンプルはこちら。
http://moeten.info/flex/20080416_jpegEnc/bin-release/main.html
Flex側のソース
ボタンを押すとそのフレームの絵をバイナリ+JpegエンコードしてPHPに送信します。
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" viewSourceURL="srcview/index.html"> <mx:Script> <![CDATA[ import mx.graphics.codec.JPEGEncoder; private var num:Number; //現在のフレーム保存する private function saveJPEG():void{ //キャンバス画像用意 var paint:BitmapData = new BitmapData( myFlv.width , myFlv.height ); //ビデオ描画 paint.draw(myFlv); //ファイル名のために現在のフレーム秒数をゲット num = myFlv.playheadTime; //バイナリデーター作成 var myEnc:JPEGEncoder = new JPEGEncoder(100); var byteArr:ByteArray = myEnc.encode(paint); //PHPへバイナリを送信する var urlRequest:URLRequest = new URLRequest("http://moeten.info/flex/20080416_jpegEnc/?img=" + num ); var urlLoader:URLLoader = new URLLoader(); urlRequest.contentType = "application/octet-stream"; urlRequest.method = URLRequestMethod.POST; urlRequest.data = byteArr; urlLoader.load(urlRequest); urlLoader.addEventListener(Event.COMPLETE , onSaved ); } //JPEG保存完了イベント private function onSaved( e:Event ):void{ //保存された画像を呼び出し myImage.source = "http://moeten.info/flex/20080416_jpegEnc/" + num + ".jpg"; } ]]> </mx:Script> <mx:VideoDisplay x="202" y="10" width="365" height="259" id="myFlv" source="test.flv"/> <mx:Image width="160" height="126" id="myImage" x="10" y="10"/> <mx:Button x="575" y="10" label="JPG変換" click="saveJPEG()"/> </mx:Application>
PHP側のソースはこちら
Flexから送られてくる生のPOSTデーターを単純にファイルに書きだすだけです。
<?php if( isset( $GLOBALS["HTTP_RAW_POST_DATA"] ) ){ //JPG 書き込み $data = $GLOBALS["HTTP_RAW_POST_DATA"]; $img = $_GET["img"]; file_put_contents( "{$img}.jpg" , $data ); }else{ echo "Encoded JPEG information not received."; } ?>
ちなみにこちらのやり方は洋書ですが「Learning Actionscript 3.0: A Beginner's Guide (Learning)」っていう本を参考にしています。書評という名の感想は後日書きたいと思います。
Learning Actionscript 3.0: A Beginner's Guide
- 作者: Rich Shupe,Zevan Rosser
- 出版社/メーカー: Oreilly & Associates Inc
- 発売日: 2007/12
- メディア: ペーパーバック
- 購入: 1人 クリック: 41回
- この商品を含むブログ (5件) を見る