Skip navigation
DavidKomer
Currently Being Moderated

HTTP MBR with OSMF

Mar 28, 2012 6:25 AM

Tags: #hds #osmf

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);
                    }
          }
}
 
 

More Like This

  • Retrieving data ...

Bookmarked By (0)

Answers + Points = Status

  • 10 points awarded for Correct Answers
  • 5 points awarded for Helpful Answers
  • 10,000+ points
  • 1,001-10,000 points
  • 501-1,000 points
  • 5-500 points