2011-12-12 94 views
2

我是Flash编程新手。我所要做的就是将本地网络摄像头流式传输到我的red5服务器,并在另一个视频中接收数据。NetStream.play + video.attachNetStream不会显示任何视频

因此我写以下代码:

NetConnection.defaultObjectEncoding = flash.net.ObjectEncoding.AMF0; 
    client_nc = new NetConnection(); 

    client_nc.objectEncoding = flash.net.ObjectEncoding.AMF0; 

    client_nc.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); 
    client_nc.connect("rtmp://localhost/myApp/"); 

    function netStatusHandler(e:NetStatusEvent):void 
    { 
     var code:String = e.info.code; 
      //log.info("code = " + code); 
     if (code == "NetConnection.Connect.Success") 
     { 
      cam_ns = new NetStream(client_nc); 

      cam_ns.attachCamera(camera); 
      cam_ns.attachAudio(mic); 

      cam_ns.publish("user_2", "live"); 
      in_ns2 = new NetStream(client_nc); 

      in_ns2.play("user_2"); 

      video2 = new Video(640, 480); 
      video2.attachNetStream(in_ns2); 
      //in_ns2.play("rtmp://localhost/myApp/user_2"); 
      //in_ns2.play("user_2"); 
      video2.x = 200; 
      video2.y = 10; 
      video2.width = 100; 
      video2.height = 100; 
      addChild(video2); 

     } 
     else 
     { 
      trace(code); 
     } 
    } 

我使用1个NetConnections 2个NetStreams的,然后将附加的凸轮+话筒上的第一个。 之后,我玩这个NetStream并尝试在第二个NetStream上附加此播放并在新视频中播放。但是,这不起作用。

我使用flashdevelop作为red5服务器的as3和eclipse。谁能帮我?

+0

尝试再创建一个Netconnection并使用该连接进行视频播放。您必须将该视频对象作为孩子添加到VideoDisplay中。 –

回答

0

对我来说它的工作是这样的:

private function viewStream():void {    
     var stream:NetStream = new NetStream(nc); 
     stream.client = new NetStreamClient(); 
     stream.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler); 
     stream.play(streamName.text);   
     var video:Video = new Video(); 
     video.attachNetStream(stream); 
     uic.addChild(video);  
    }    

    private function asyncErrorHandler(event:AsyncErrorEvent):void { 
     trace(event.text); 
    } 

其中NC是我的一个全局NetConnection和streamName中是

<mx:TextInput id="streamName" text="test"/> 

和UIC是UIComponent

<mx:UIComponent id="uic" width="300" height="250"/> 

我打电话viewStream按钮方法

<mx:Button label="view Stream" click="viewStream()"/> 

我也有VideoDisplay问题。所以我用UIComponent做了它,它运行良好。 也许你有问题,因为你发布后直接尝试ns.play。我认为你应该尝试一下按钮,等待一秒后开始发布。