0

私はadobeFMS4.5を使用して、同じアプリケーションでWebカメラからビデオを録画し、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ビデオのように表示する必要があります。

4

1 に答える 1

0

これらのコントロールを自分で作成するか、フラッシュコンポーネント(FLVplayback)またはストロボを使用する必要があります(ただし、swcを使用して既存のフラッシュプロジェクトにストロボを埋め込む簡単な方法はないと思いますが、他の誰かがコメントしたり、これを編集して明確にします)

FLVplaybackは、スキンを使用して希望どおりに表示できます

于 2012-08-23T16:38:32.867 に答える