Как работать с NetStatusEvents с OSMF - PullRequest
0 голосов
/ 12 июля 2011

Я занимаюсь разработкой видеоплеера с использованием библиотеки OSMF. У меня проблема в том, что я иногда теряю соединение с сервером. Поэтому я настроил объект, который следит за соединением с сервером, и в случае потери соединения он пытается ограниченное количество раз переподключиться, прежде чем сдаться. Все работает просто отлично, за исключением сообщения, которое я получаю в отладочной версии плеера, в котором говорится:

Ошибка № 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 Есть идеи, как справиться с этим? Спасибо.

Ответы [ 3 ]

4 голосов
/ 07 июля 2012

Вы можете получить его из 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);
}
2 голосов
/ 21 октября 2011

Вы можете прослушивать изменения состояния 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;
    }
}
0 голосов
/ 12 июля 2011
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;
  }
} 
...