2011-07-12 15 views
0

OSMFライブラリを使用してビデオプレーヤーを開発しています。私はときどきサーバーとの接続が失われるという問題があります。だから私はサーバーとの接続を監視するオブジェクトを設定し、接続が失われた場合は、あきらめる前に再接続するために限られた回数試行します。すべては、私がデバッガ版のプレーヤーのメッセージを除いて正常に動作します。OSMFでNetStatusEventを処理する方法

エラー#2044:未処理のNetStatusEvent:。レベル=エラー、コード= NetStream.Play.StreamNotFound

私はHTTPStreamingNetLoaderから継承し、processFinishLoadingメソッドをオーバーライドし、netStreamを取得し、ネットステータスイベントをリッスンするオブジェクトを持っています。このように:

override protected function processFinishLoading(loadTrait:NetStreamLoadTrait):void 
    {  
      netStream = loadTrait.netStream as HTTPNetStream; 
      netStream.addEventListener(NetStatusEvent.NET_STATUS, onNetStatus); 
    ... 
    } 

しかし、私はまだエラーが発生します。 onNetStatusメソッドは、NETSTREAM_BUFFER_EMPTY、NETSTREAM_BUFFER_FULLまたはNETSTREAM_PLAY_STARTのようなイベントを取得しますが、NETSTREAM_PLAY_STREAMNOTFOUNDは発生しません。 これを処理する方法はありますか?おかげさまで

答えて

0
stream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandle 

public function netStatusHandler(e:NetStatusEvent):void{ 
    switch (e.info.code){ 
    case "NetStream.Seek.InvalidTime": 
     trace('seek was to far') 
     break; 
    case "NetStream.Play.StreamNotFound": 
     trace("Unable to locate video"); 
     break; 
    } 
} 
+0

これはもちろん私がやっていることであり、うまくいきません。 NetStatusHandlerを呼び出さずにエラーが発生した場合は、前に言及したバッファリングイベントのような他のNetStatusEventを受け取ります。 –

+0

それはストリームサービスで何かです。 –

2
あなたはMediaPlayerの状態の変化を聞くことができ

mediaPlayer.addEventListener(MediaPlayerStateChangeEvent.MEDIA_PLAYER_STATE_CHANGE, onMediaPlayerStateChange, false, 0, true); 

...

private function onMediaPlayerStateChange(e:MediaPlayerStateChangeEvent):void 
{ 
    _mediaState = e.state;  

    switch (_mediaState) 
    { 
     case MediaPlayerState.READY:       
     break; 

     case MediaPlayerState.BUFFERING: 
     break; 

     case MediaPlayerState.LOADING: 
     break; 

     case MediaPlayerState.PAUSED: 
     break; 

     case MediaPlayerState.PLAYING: 
     break; 

     case MediaPlayerState.PLAYBACK_ERROR: 
     break; 

     case MediaPlayerState.UNINITIALIZED: 
     break; 
    } 
} 
4

あなたは、

mediaElement.addEventListener(MediaElementEvent.TRAIT_ADD, onTraitAdd); 

、その後のMediaElementからそれを得ることができます

private function onTraitAdd(event:MediaElementEvent):void 
{ 
    trace(" [add]", event.toString()); 
    if (event.traitType == MediaTraitType.LOAD) 
    { 

    if (mediaElement.hasTrait(MediaTraitType.LOAD)) 
    { 
     netStreamLoadTrait = mediaElement.getTrait(MediaTraitType.LOAD) as NetStreamLoadTrait; 
     netStreamLoadTrait.addEventListener(LoadEvent.LOAD_STATE_CHANGE, onLoaded); 

    } 
    } 
} 


private function onLoaded(event:LoadEvent):void 
{ 
    netStream = netStreamLoadTrait.netStream; 
    netStream.addEventListener(NetStatusEvent.NET_STATUS, onNetStatus); 
} 
関連する問題