2010-10-11 40 views
2

我試圖使用NetConnection類連接到外部服務器上的實時視頻供稿。當用戶點擊播放按鈕時,我開始播放視頻,但是,每次單擊播放按鈕時,都會顯示在我的輸出中:使用NetConnection類

參數錯誤:錯誤#2126:必須連接NetConnection對象。 在flash.net::NetStream/ctor() 在flash.net::NetStream() 在上/ connectLiveStream()[在::幀2:31]

任何想法,這是爲什麼不加工?這裏是(我認爲相關的)代碼:

if (playVid.label == "Play") 
{ 
    nc = new NetConnection(); 
     nc.objectEncoding = flash.net.ObjectEncoding.AMF0; 
     nc.connect("rtmp://my.rtmp.server:1935/live/"); 

     nsPlay = new NetStream(nc); 
     nsPlay.play("livestream.flv"); 

} 

在此先感謝。

+1

您應該添加一些事件處理程序到你的'nc'對象,看看是怎麼回事用'NetStatusEvent'。 – phwd 2010-10-12 02:39:30

回答

1

我從Adobe文檔站點複製此:

package { 
import flash.display.Sprite; 
import flash.events.*; 
import flash.media.Video; 
import flash.net.NetConnection; 
import flash.net.NetStream; 

public class NetStatusEventExample extends Sprite { 
    private var videoURL:String = "Video.flv"; 
    private var connection:NetConnection; 
    private var stream:NetStream; 

    public function NetStatusEventExample() { 
     connection = new NetConnection(); 
     connection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); 
     connection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); 
     connection.connect(null); 
    } 

    private function netStatusHandler(event:NetStatusEvent):void { 
     switch (event.info.code) { 
      case "NetConnection.Connect.Success": 
       connectStream(); 
       break; 
      case "NetStream.Play.StreamNotFound": 
       trace("Unable to locate video: " + videoURL); 
       break; 
     } 
    } 

    private function connectStream():void { 
     var stream:NetStream = new NetStream(connection); 
     stream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); 
     stream.addEventListener(AsyncErrorEvent.ASYNC_ERROR, asyncErrorHandler); 
     var video:Video = new Video(); 
     video.attachNetStream(stream); 
     stream.play(videoURL); 
     addChild(video); 
    } 

    private function securityErrorHandler(event:SecurityErrorEvent):void { 
     trace("securityErrorHandler: " + event); 
    } 

    private function asyncErrorHandler(event:AsyncErrorEvent):void { 
     // ignore AsyncErrorEvent events. 
    } 

} 
} 

class CustomClient { 
public function onMetaData(info:Object):void { 
    trace("metadata: duration=" + info.duration + " width=" + info.width + " height=" + info.height + " framerate=" + info.framerate); 
} 
public function onCuePoint(info:Object):void { 
    trace("cuepoint: time=" + info.time + " name=" + info.name + " type=" + info.type); 
} 
} 

希望這可以幫助,如果它拋出你需要設置你連接得流媒體服務器上的跨域策略文件安全性錯誤。

鏈接:

+0

你可以舉一個這裏的connection.connect()參數的例子嗎?在你的代碼中你傳遞null。我想知道是否允許的唯一協議是rtmp協議?我希望不是因爲我想讓服務器成爲GlassFish(Java)服務器... – c0d3Junk13 2014-08-22 15:43:49