无法正常显示来自NetStream的视频

时间:2013-07-23 22:27:28

标签: actionscript-3 flash flex flash-builder

我基本上开始使用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>

1 个答案:

答案 0 :(得分:0)

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

  

您是否使用相同的网络摄像头设备在同一浏览器上进行测试   司机?

可能是因为驱动程序被使用后您无法看到它。  从网站ManyCam获取虚拟网络摄像头驱动程序并进行测试。您的申请将有效。