0 Replies Latest reply: Mar 28, 2012 6:25 AM by DavidKomer RSS

    HTTP MBR with OSMF

    DavidKomer Community Member

      I just can't get it to work... tried both via F4m and smil, versions 1 or 2 of HDS... nothing works.

       

      Any suggestions?

       

      Here's my code:

       

       

      package 
      {
                import flash.display.Sprite;
                import flash.events.EventDispatcher;
        
                import com.akamai.osmf.AkamaiBasicStreamingPluginInfo;
                import org.osmf.containers.MediaContainer;
                import org.osmf.elements.VideoElement;
                import org.osmf.events.DynamicStreamEvent;
                import org.osmf.events.MediaFactoryEvent;
                import org.osmf.events.MediaPlayerStateChangeEvent;
                import org.osmf.media.DefaultMediaFactory;
                import org.osmf.media.MediaElement;
                import org.osmf.media.MediaFactory;
                import org.osmf.media.MediaPlayer;
                import org.osmf.media.MediaResourceBase;
                import org.osmf.media.PluginInfo;
                import org.osmf.media.PluginInfoResource;
                import org.osmf.media.URLResource;
                import org.osmf.net.DynamicStreamingResource;
                import org.osmf.smil.SMILPluginInfo;
                import org.osmf.utils.Version;
        
                public class VP_REGULAR extends Sprite
                {
                          private var mediaContainer:MediaContainer = null;
                          private var mediaPlayer:MediaPlayer = null;
                          private var mediaElement:MediaElement = null;
                          private var mediaFactory:MediaFactory = null;
                          private var _src:String = null;
                          private var _pluginsToLoad:Array = null;
        
                          public function VP_REGULAR()
                          {
                                    super();
        
                                    this.src = 'PATH TO F4M OR SMIL HERE!'
                          }
        
                          public function set src(str:String) {
                                    if(_src == str || str == null) {
                                              return;
                                    }
        
                                    close();
        
                                    _src = str;
        
                                    mediaFactory = new DefaultMediaFactory(); 
                                    loadPlugins([new AkamaiBasicStreamingPluginInfo(), new SMILPluginInfo()]);
        
                          }
                          public function close() {
                                    stop();
        
                                    if(mediaPlayer != null) {
                                              mediaPlayer.removeEventListener(MediaPlayerStateChangeEvent.MEDIA_PLAYER_STATE_CHANGE, playerStateChange);
                                              mediaPlayer.removeEventListener(DynamicStreamEvent.SWITCHING_CHANGE, dynamicStreamChange);
                                    }
        
                                    if(mediaContainer != null) {
                                              removeChild(mediaContainer);
                                    }
        
                                    mediaPlayer = null;
                                    mediaContainer = null;
                                    mediaElement = null;
                                    mediaFactory = null;
                                    _pluginsToLoad = null;
                                    _src = null;
                          }
        
                          public function stop() {
                                    if(mediaPlayer != null) {
                                              mediaPlayer.stop();
                                    }
                          }
        
                          private function loadPlugins(__pluginsToLoad:Array = null) {
                                    if(__pluginsToLoad != null) {
                                              _pluginsToLoad = __pluginsToLoad;
                                    }
        
                                    if(_pluginsToLoad.length) {
                                              loadPlugin(_pluginsToLoad.shift());
                                    } else {
                                              allPluginsLoaded();
                                    }
                          }
                          private function loadPlugin(source:PluginInfo):void {
                                    var pluginResource:MediaResourceBase;
        
                                    pluginResource = new PluginInfoResource(source);
                                    loadPluginFromResource(pluginResource);
                          }
        
                          private function loadPluginFromResource(pluginResource:MediaResourceBase):void {
                                    mediaFactory.addEventListener(MediaFactoryEvent.PLUGIN_LOAD, onPluginLoaded);
                                    mediaFactory.addEventListener(MediaFactoryEvent.PLUGIN_LOAD_ERROR, onPluginLoadFailed);
                                    mediaFactory.loadPlugin(pluginResource);
                          }
        
                          private function onPluginLoaded(event:MediaFactoryEvent):void {
                                    trace("Plugin loaded");
                                    loadPlugins();
                          }
        
                          private function onPluginLoadFailed(event:MediaFactoryEvent):void {
                                    trace("Could not load Plugin");
                                    loadPlugins();
                          }
        
                          private function allPluginsLoaded():void {
                                    trace('All plugins loaded!');
                                    loadMedia();
                          }
        
                          private function loadMedia() { 
                                    var mediaResource:URLResource = new URLResource(_src); 
                                    mediaElement = mediaFactory.createMediaElement(mediaResource);
        
                                    trace(mediaElement);
        
                                    playMediaElement();
                          }
      
      
                          private function playMediaElement() {
        
                                    if(mediaPlayer == null) {
                                              mediaPlayer = new MediaPlayer();
                                              mediaPlayer.addEventListener(MediaPlayerStateChangeEvent.MEDIA_PLAYER_STATE_CHANGE, playerStateChange);
                                              mediaPlayer.addEventListener(DynamicStreamEvent.SWITCHING_CHANGE, dynamicStreamChange);
        
                                    }
        
                                    if(mediaContainer == null) {
                                              mediaContainer = new MediaContainer();
                                              addChild(mediaContainer);
                                    }
        
                                    mediaContainer.addMediaElement(mediaElement);
                                    mediaPlayer.media = mediaElement;
        
        
                          }
        
                          private function playerStateChange(evt:MediaPlayerStateChangeEvent) {
                                    trace(evt.state);
                          }
        
                          private function dynamicStreamChange(evt:DynamicStreamEvent) {
                                    var player:MediaPlayer = evt.target as MediaPlayer;
                                    trace('switched dynamic stream to:', player.currentDynamicStreamIndex);
                          }
                }
      }