http://www.cnblogs.com/beniao/category/190537.html
在舞台上从组件中拖出输入文本框,三个按钮,分别命名:
tbName,btnPublish,btnStop,btnPlay
package
{
import flash.net.*;
import flash.events.*;
import flash.media.*;
import flash.display.*;
import fl.controls.*;
public class PublishPlay extends Sprite
{
private var nc:NetConnection;
private var ns:NetStream;
private var video:Video;
private var cam:Camera;
private var mic:Microphone;
public function PublishPlay():void
{
tbName.text="请输入视频文件名:";
btnPublish.label="开始录制";
btnPublish.addEventListener(MouseEvent.CLICK,onPublishClick);
btnStop.label="停止录制";
btnStop.addEventListener(MouseEvent.CLICK,onStopHandler);
btnPlay.label="视频回放";
btnPlay.addEventListener(MouseEvent.CLICK,onPlayHandler);
video=new Video();
cam = Camera.getCamera();
mic = Microphone.getMicrophone();
if(cam==null)
{
trace("没检测到视频摄像头");
}
else
{
video.attachCamera(cam);
}
addChild(video);
}
private function onStatusHandler(evt:NetStatusEvent):void
{
trace(evt.info.code);
if(evt.info.code=="NetConnection.Connect.Success")
{
ns=new NetStream(nc);
ns.addEventListener(NetStatusEvent.NET_STATUS,onStatusHandler);
ns.client=new CustomClient();
}
}
private function onPublishClick(evt:MouseEvent):void
{
nc=new NetConnection();
nc.addEventListener(NetStatusEvent.NET_STATUS,onPublishStatusHandler);
nc.connect("rtmp://localhost/firstfmsapp");
}
private function onPublishStatusHandler(evt:NetStatusEvent):void
{
if(evt.info.code=="NetConnection.Connect.Success")
{
ns=new NetStream(nc);
ns.addEventListener(NetStatusEvent.NET_STATUS,onPublishStatusHandler);
ns.client=new CustomClient();
ns.attachCamera(cam);
ns.attachAudio(mic);
ns.publish(tbName.text,"record");
}
}
private function onStopHandler(evt:MouseEvent):void
{
nc.close();
}
private function onPlayHandler(evt:MouseEvent):void
{
nc=new NetConnection();
nc.addEventListener(NetStatusEvent.NET_STATUS,onPlayStatusHandler);
nc.connect("rtmp://localhost/firstfmsapp");
}
private function onPlayStatusHandler(evt:NetStatusEvent):void
{
if(evt.info.code=="NetConnection.Connect.Success")
{
ns=new NetStream(nc);
ns.addEventListener(NetStatusEvent.NET_STATUS,onPlayStatusHandler);
ns.client=new CustomClient();
video = new Video();
video.attachNetStream(ns);
ns.play(tbName.text,0);
addChild(video);
}
}
}
}
代码中的目录要先手动简历,然后录制的视频片段就会保存在该目录下,
但是根据教程,播放结束后会提示出错:
Error #2044: 未处理的 AsyncErrorEvent:。 text=Error #2095: flash.net.NetStream 无法调用回调 onPlayStatus。 error=ReferenceError: Error #1069: 在 CustomClient 上找不到属性 onPlayStatus,且没有默认值。
at PublishPlay/onPlayStatusHandler()