簡體   English   中英

無法正確顯示來自NetStream的視頻

[英]Can't display video coming in from NetStream properly

我基本上開始使用Flex和netstream進行視頻通話。 因此,我能夠閱讀一些有關Netstream和流的信息,並編寫了這段代碼來獲取攝像機並將其流發布到視圖下方的視頻顯示中,但是即使我通過了所有方法,也沒有出現任何錯誤,顯示,所以我真的不知道發生了什么。 這是我所做的。

<?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>

這些是停止顯示流的一些原因。

您是否正在使用相同的網絡攝像頭設備驅動程序在相同的瀏覽器上對其進行測試?

可能是因為正在使用驅動程序,所以您看不到它。 從網站ManyCam獲取虛擬網絡攝像頭驅動程序並進行測試。 您的應用程序將運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM