0

OSMFライブラリを使用してビデオプレーヤーを開発しています。サーバーへの接続が失われることがあるという問題があります。そこで、サーバーへの接続を監視するオブジェクトを設定しました。接続が失われた場合、サーバーは限られた回数だけ再接続を試みてから、あきらめます。デバッガーバージョンのプレーヤーで次のように表示されるメッセージを除いて、すべてが正常に機能します。

エラー#2044:未処理のNetStatusEvent:。level = error、code = 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は取得しません。ありがとう。

4

3 に答える 3

4

mediaElementから取得できます

mediaElement.addEventListener(MediaElementEvent.TRAIT_ADD, onTraitAdd);

それから、

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);
}
于 2012-07-07T10:36:14.297 に答える
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;
    }
}
于 2011-10-20T23:22:37.703 に答える
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;
  }
} 
于 2011-07-12T16:42:25.273 に答える