Stream녹화하는 예제를 찾는 중, Red5를 이용한 예제는 수없이 많았지만 FMS를 이용한 예제를 찾기 힘들어 포스팅 합니다.
Server Side소스는 따로 필요없습니다. rtmp PATH만 잡아주시면 됩니다. 핵심은 Stream을 퍼블리싱 할 때, 두번째 값으로 "record"를 넘겨주시면 됩니다.
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
minWidth="955"
minHeight="600"
creationComplete="initApp();"
>
<fx:Script>
<![CDATA[
import mx.controls.Alert;
private var ns:NetStream = null;
private var nc:NetConnection = null;
private var cam:Camera = null;
private var mic:Microphone = null;
private var vid1:Video;
private var vid2:Video;
private var msg:Boolean;
private var metaSniffer:Object;
private function initApp():void
{
initDevice();
initConnection();
videoSetup();
recordBtn.addEventListener (MouseEvent.CLICK,startRecord);
stopBtn.addEventListener (MouseEvent.CLICK,stopAll);
playBtn.addEventListener (MouseEvent.CLICK,startPlay);
}
private function initDevice():void
{
cam = Camera.getCamera();
cam.setKeyFrameInterval(12);
cam.setMode(240, 180, 15);
cam.setQuality(0, 80);
mic = Microphone.getMicrophone();
}
private function initConnection():void
{
nc = new NetConnection();
nc.connect('rtmp://localhost/RecordTest/');
nc.addEventListener("netStatus", checkConnect);
}
private function videoSetup():void
{
vid1 = new Video(cam.width, cam.height);
vid1.attachCamera(cam);
currentVideo.addChild(vid1);
vid2 = new Video(cam.width, cam.height);
recordedVideo.addChild(vid2);
}
private function checkConnect (e:NetStatusEvent):void
{
msg=(e.info.code=="NetConnection.Connect.Success");
if (msg)
{
ns = new NetStream(nc);
metaSniffer=new Object();
ns.client=metaSniffer;
metaSniffer.onMetaData=getMeta;
}
}
private function getMeta (mdata:Object):void
{
//Dummy to avoid error
}
private function startRecord(e:Event):void
{
if(ns)
{
recordBtn.label = "Recording";
ns.attachAudio(mic);
ns.attachCamera(cam);
ns.publish("myStream", "record");
}
}
private function stopAll(e:Event):void
{
playBtn.label = "Playing";
recordBtn.label = "Record";
ns.close();
}
private function startPlay(e:Event):void
{
if(ns)
{
playBtn.label="Playing";
vid2.attachNetStream(ns);
ns.play("myStream");
}
}
]]>
</fx:Script>
<s:VGroup>
<s:HGroup>
<s:VideoDisplay width="300" height="300" id="currentVideo" />
<s:VideoDisplay width="300" height="300" id="recordedVideo" />
</s:HGroup>
<s:HGroup>
<s:Button label="Record" id="recordBtn" />
<s:Button label="Stop" id="stopBtn" />
<s:Button label="Play" id="playBtn" />
</s:HGroup>
</s:VGroup>
</s:Application>
*source code :RecordTest.fxp
'Media > WOWZA' 카테고리의 다른 글
[Wowza] WOWZA 설정하기 (5) | 2014.01.09 |
---|---|
[Wowza] 윈도우환경에서 WOWZA 설치하기 (0) | 2013.12.18 |
[FMS] 비디오 파일 스트리밍 대략적인 흐름 (0) | 2012.10.26 |
[FMS] Responder, NetConnection.call() (0) | 2012.10.04 |
[FMS] Best practices for real-time collaboration using Flash Media Server (0) | 2012.09.26 |