使用像youtube这样的flash媒体播放器从fms播放netsteam



我使用adobe FMS 4.5从网络摄像头录制视频,并在同一应用程序中从FMS播放网络。

我的客户端操作脚本类似

package
{
    import fl.controls.Button;
    import flash.display.Sprite;
    import flash.net.NetConnection;
    import flash.net.NetStream;
    import flash.events.NetStatusEvent;
    import flash.events.MouseEvent;
    import flash.events.Event;
    //import flash.net.ObjectEncoding;
    import flash.media.Camera;
    import flash.media.Microphone;
    import flash.media.Video;

public class mytest3 extends Sprite
    {
        private var nc:NetConnection;
        private var ns:NetStream;
        private var rtmpNow:String;
        private var msg:Boolean;
        private var cam:Camera;
        private var mic:Microphone;
        private var vid1:Video;
        private var recordBtn:Button;
        private var stopBtn:Button;
        private var playBackBtn:Button;
        private var textInput:TextInput;
        private var timestamp:Date    = new Date();
        private var fileName:String;

        //Constructor
        function mytest3 ()
        {
            //NetConnection.defaultObjectEncoding = flas    h.net.ObjectEncoding.AMF0;
            nc=new NetConnection();
            nc.addEventListener (NetStatusEvent.NET_STATUS,checkConnect);
            rtmpNow="rtmp://localhost/test1";
            //rtmpNow="rtmp://192.169.1.25/test1";
            nc.connect (rtmpNow);
            addMedia ();
            addUI ();
            recordBtn.addEventListener (MouseEvent.CLICK,startRecord);
            stopBtn.addEventListener (MouseEvent.CLICK,stopRecord);
            playBackBtn.addEventListener(MouseEvent.CLICK,playBack);
    }
        private function addMedia ():void
        {
            cam=Camera.getCamera();
            cam.setMode (240,180,24);
            cam.setQuality (0,100);
            mic=Microphone.getMicrophone();
            vid1=new Video(cam.width,cam.height);
            vid1.attachCamera (cam);
            addChild (vid1);
            vid1.x=100;
            vid1.y=50;
        }
        private function addUI ():void
        {
            recordBtn=new Button();
            recordBtn.label="Start Recording";
            recordBtn.x=100;
            recordBtn.y=50+(cam.height) +5;
            recordBtn.width=70;
            addChild (recordBtn);
            stopBtn=new Button();
            stopBtn.label="Stop Recording";
            stopBtn.x=recordBtn.x+85;
            stopBtn.y=recordBtn.y;
            stopBtn.width=75;
            addChild (stopBtn);
            playBackBtn=new Button();
            playBackBtn.label="PlayBack";
            playBackBtn.x=stopBtn.x+85;
            playBackBtn.y=recordBtn.y;
            playBackBtn.width=75;
            addChild(playBackBtn);
        }
        private function checkConnect (e:NetStatusEvent):void
        {
            msg=(e.info.code=="NetConnection.Connect.Success");
            if (msg)
            {
                ns = new NetStream(nc);
            }
        }
        private function startRecord (e:Event):void
        {
            if (ns)
            {
                //recordBtn.label="Recording";
                recordBtn.visible=false;
                ns.attachAudio (mic);
                ns.attachCamera (cam);
                fileName = String("videos"+timestamp.getTime());
                ns.publish(fileName,"record")
            }
        }
        private function stopRecord (e:Event):void
        {
            //recordBtn.label="Recorded"
            recordBtn.visible=false;;
            stopBtn.label="Stoped";
            ns.close ();
        }
        private function playBack(e:Event):void 
        {
            playBackBtn.label="Playing Back";
            stopBtn.visible=false;
            var nsPlayer:NetStream = new NetStream(nc);
            //nsPlayer.play("my.flv");
            var vid:Video = new Video(cam.width,cam.height);
            vid.x = playBackBtn.x+30;
            vid.y = vid1.y;
            vid.attachNetStream(nsPlayer);
            nsPlayer.play(fileName);
            vid.smoothing=true;
            addChild(vid);
        }
    }
}  

录音和回放都很好。我希望当它播放时,它应该看起来像youtube视频,带有播放、暂停、搜索栏等控件。

您要么需要自己创建这些控件,要么使用flash组件(FLVplayback)或Strobe(尽管我不认为有一种简单的方法可以用swc将频闪嵌入现有的flash项目中,也许其他人可以对此进行评论或编辑以澄清)

FLV回放可以进行蒙皮,以查看您想要的

最新更新