Flexで音声保存(RED5)
FlexでRED5を使って音声を保存してみました。
大学の研究で、音声クエリの作成が必要とのことで、今回RED5を用いて作成しました。
#サーバーが必要なのでサンプルはないでっす。
RED5
http://osflash.org/red5
追加クラス( import com.renaun.samples.net.FMSConnection の部分ね)
http://renaun.com/flex2/red5/BasicChat.html
ソースビューでダウンロードしてください。
簡単なソースはこんな感じ。スタートで録音開始で、ストップで録音停止+録音されたものを再生
以下の場合だと音声ファイルは「C:\Program Files\Red5\webapps\oflaDemo\streams」に保存されます。
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()" > <mx:Script> <![CDATA[ import mx.core.UIComponent; import com.renaun.samples.net.FMSConnection; private var nc:FMSConnection; private var clientID:Number; private var ns:NetStream; private var lastVideoName:String; private function init():void{ // Netコネクションの設定 NetConnection.defaultObjectEncoding = flash.net.ObjectEncoding.AMF0; nc = new FMSConnection(); nc.addEventListener( "success", connectionSuccessHandler ); nc.connect( "rtmp://localhost/oflaDemo" ); // ボタンの設定 btnStart.enabled = true; btnStop.enabled = false; } private function connectionSuccessHandler( event:Event ):void { clientID = nc.clientID; } private function startClick():void{ //録音開始 myLog.text = "start"; // ネットストリーム作成 ns = new NetStream(nc); //メタデータの設定(なんかないと怒られる) var client:Object = new Object(); client.onMetaData = onMetaData; ns.client = client // マイクの設定 var mic:Microphone = Microphone.getMicrophone(); ns.attachAudio(mic); //ファイル名 lastVideoName = "red5RecordDemo_" + Math.random(); //録音スタート ns.publish(lastVideoName, "record"); // ボタンの設定 btnStart.enabled = false; btnStop.enabled = true; } private function stopClick():void{ //録音停止 myLog.text = "stop"; ns.close(); //録音したものを再生(なんかめんどっちい var uiC:UIComponent = new UIComponent(); var video:Video = new Video(320,240); video.attachNetStream( ns ); uiC.addChild(video); videoContainer.addChild(uiC); ns.play(lastVideoName + ".flv"); // ボタンの設定 btnStart.enabled = true; btnStop.enabled = false; } // メタデータ取得 private function onMetaData(data:Object):void{ } ]]> </mx:Script> <mx:Canvas id="videoContainer" width="400" height="400" x="345.5" y="10"/> <mx:Panel x="10" y="12" width="208" height="398" layout="absolute"> <mx:TextArea x="10" y="151" width="167" height="197" id="myLog"/> <mx:Button id="btnStop" x="116" y="10" label="ストップ" click="stopClick()"/> <mx:Button id="btnStart" x="45" y="10" label="スタート" click="startClick()"/> <mx:Label x="10" y="12" text="録音"/> </mx:Panel> </mx:Application>
正直疲れた・・・。でも、できてよかった(>_<)