OSMF seek with Amazon Cloudfront

Posted by giorrrgio on Stack Overflow See other posts from Stack Overflow or by giorrrgio
Published on 2011-06-07T10:50:21Z Indexed on 2011/06/24 8:22 UTC
Read the original article Hit count: 238

Filed under:
|
|
|

I've written a little OSMF player that streams via RTMP from Amazon Cloudfront. There's a known issue, the mp3 duration is not correctly readed from metadata and thus the seek function is not working. I know there's a workaround implying the use of getStreamLength function of NetConnection, which I successfully implemented in a previous non-OSMF player, but now I don't know how and when to call it, in terms of OSMF Events and Traits. This code is not working:

  protected function initApp():void
  {
    //the pointer to the media
    var resource:URLResource = new URLResource( STREAMING_PATH );

    // Create a mediafactory instance
    mediaFactory = new DefaultMediaFactory();

    //creates and sets the MediaElement (generic) with a resource and path
    element = mediaFactory.createMediaElement( resource );

    var loadTrait:NetStreamLoadTrait = element.getTrait(MediaTraitType.LOAD) as NetStreamLoadTrait;
    loadTrait.addEventListener(LoaderEvent.LOAD_STATE_CHANGE, _onLoaded);
    player = new MediaPlayer( element );

    //Marker 5: Add MediaPlayer listeners for media size and current time change
    player.addEventListener( DisplayObjectEvent.MEDIA_SIZE_CHANGE, _onSizeChange );
    player.addEventListener( TimeEvent.CURRENT_TIME_CHANGE, _onProgress );

    initControlBar();
  }
  private function onGetStreamLength(result:Object):void {
    Alert.show("The stream length is " + result + " seconds"); 
    duration = Number(result);
  }

  private function _onLoaded(e:LoaderEvent):void
  {
    if (e.newState == LoadState.READY)
    {
      var loadTrait:NetStreamLoadTrait = player.media.getTrait(MediaTraitType.LOAD) as NetStreamLoadTrait;

      if (loadTrait && loadTrait.netStream)

      {
      var responder:Responder = new Responder(onGetStreamLength);
      loadTrait.connection.call("getStreamLength", responder, STREAMING_PATH);
      }
    }
  }

© Stack Overflow or respective owner

Related posts about flash

Related posts about flex