0

我基本上开始使用 Flex 和 netstream 进行视频通话。所以我能够阅读一些关于 Netstreams 和流媒体的信息,我编写了这段代码来获取我的相机并将我的流发布到视图下方的视频显示中,但即使我通过所有方法没有任何错误,但显示不是显示所以我真的不知道发生了什么。这就是我所做的。

<?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" applicationDPI="160" creationComplete="start();">
    <fx:Script>
        import flash.media.Camera;
        import flash.media.Video;
        import flash.net.NetConnection;
        import flash.net.ObjectEncoding;
        import flash.events.AsyncErrorEvent; 
        import flash.events.NetStatusEvent;
        import flash.net.NetStream;
        import mx.graphics.ImageSnapshot;
        import mx.graphics.codec.JPEGEncoder;

        public var camera:Camera;
        var video:Video;
        public var myVideo:Video;
        private var nc:NetConnection;
        private var rtmpf:String="rtmfp://p2p.rtmfp.net/61c33c80be7022350a0dea3d-960194f988ba/";
        private const DEVKEY:String = "61c33c80be7022350a0dea3d-960194f988ba";

        public var in_ns:NetStream;
        public var out_ns:NetStream;
        public function start():void{
            trace("Started the start function");
            nc=new NetConnection();
            nc.objectEncoding = ObjectEncoding.AMF0;
            nc.client=this;
            nc.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler);
            nc.connect(rtmpf);
        }
        public function netStatusHandler(event:NetStatusEvent):void{
            switch(event.info.code){
                case "NetConnection.Connect.Success":
                    trace("Received the status");
                    initStart();
                    default:
                    trace( event.info.code);
            }
        }

        public function initStart():void{
            trace("Started the initstart function");
            initNetStream();
            initMyVideo();
            publish();
            playIt();

        }

        public function initNetStream():void{
            trace("Started the initNetstream start function");
            out_ns=new NetStream(nc);
            out_ns.client=this;
            in_ns=new NetStream(nc);
            in_ns.client=this;
        }

        public function publish():void{
            trace("Started the publish function");
            camera=Camera.getCamera();
            out_ns.attachCamera(camera);
            out_ns.publish("Me", "live");

        }
        public function startCamera(muteCam:Boolean=false):void{
            if(!video)
            video = new Video(); 
            trace("Started the startCamera function");
            camera=Camera.getCamera();
            if(muteCam){
                video.attachCamera(camera);
                //out_ns.attachCamera(camera);
                //out_ns.publish("Me", "live");
                vidHolder.addChild(video);
            }else{
                video.attachCamera(null);
                if(contains(video))
                    vidHolder.removeChild(video);
                //camera=null;

            }


        }
        public function initMyVideo():void
        {
            trace("Started the initmyvideo function");
            myVideo = new Video(230,160);
            myVideo.x = 10;
            myVideo.width = 230; 
            myVideo.height = 160;
            myVideo.y = 30;
        //  myVid.addChild(myVideo);
        }

        public function playIt():void{
            trace("Started the play it function");
            myVideo.attachNetStream(in_ns);
            in_ns.play("Me");
            myVid.addChild(myVideo);
        }

        public function stopCamera():void{
            vidHolder.removeChild(video);
        }
    </fx:Script>
    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->

    </fx:Declarations>

    <s:Button x="116" y="28" label="Start" click="startCamera(true)"/>
    <s:VideoDisplay id="vidHolder" x="31" y="87" width="200" height="100"
                    />
    <s:VideoDisplay id="myVid" x="31" y="250"/>
    <s:Button id="stop" x="208" y="28" label="Stop" click="startCamera(false)"/>

</s:Application>
4

1 回答 1

0

这些是停止显示流的一些原因。

您是否使用相同的网络摄像头设备驱动程序在相同的浏览器上测试它?

可能是因为您正在使用驱动程序,所以您无法看到它。从网站ManyCam获取虚拟网络摄像头驱动程序并进行测试。您的应用程序将起作用。

于 2013-07-25T10:31:31.167 回答