topical media & game development

talk show tell print

actionscript-video-06-player.ax

actionscript-video-06-player.ax [swf] flex


  package {
      import flash.display.Sprite;
      import flash.net.NetConnection;
      import flash.net.NetStream;
      import flash.media.Video;
      import flash.display.MovieClip;
          import flash.net.URLLoader;
          import flash.net.URLRequest;
          import flash.utils.getTimer;
          import flash.events.Event;
  
      public class @ax-actionscript-video-06-player extends Sprite {
              private var testLoader:URLLoader;
              private var timeStart:Number;
         
          public function @ax-actionscript-video-06-player() {
              testConnection();
                          trace("running");
          }
          private function onMetaData(data:Object):void {
              // Satisfies Flash's need to send metadata with Flash Video
              // This is considered to be a bug and may be fixed in the final AS3 release
          }
          private function testConnection():void {
                  testLoader = new URLLoader();
                  //var request:URLRequest = new URLRequest("http://www.flashconnections.com/flash-video-pro/Ch06/bw_testing.jpg?"+getTimer());
                  var request:URLRequest = new URLRequest("../assets/video/flash/bw_testing.jpg?"+getTimer());
  trace(request.url);
                  testLoader.load(request);
                  //trace("testConnection"+request.url);
                  testLoader.addEventListener(Event.OPEN, onLoadStart);
                  testLoader.addEventListener(Event.COMPLETE, onLoadComplete);
          }
          private function onLoadStart(event:Event):void {
                  timeStart = getTimer();
                  //trace("onLoadStart "+timeStart);
          }
          private function onLoadComplete(event:Event):void {
                  var timeTotal:Number = getTimer() - timeStart;
                  // Get size of file downloaded
                  var fileSize:uint = testLoader.bytesTotal;
                  // Convert milliseconds to seconds
                  var seconds:Number = timeTotal / 1000;
                  // Convert filesize (bytes) to kilobits
                  var kb:Number = fileSize * 8 / 1000;
                  // Determine kilobits per second
                  var kbps:Number = kb / seconds;
                  trace("kbps "+kbps);
                  if(kbps <= 80) {
                          playVideo("../assets/video/flash/myvideo_56.flv");
                          trace("play low");
                  }
                  else if(kbps <= 310) {
                          playVideo("../assets/video/flash/myvideo_56.flv");        
                          trace("play medium");
                  }
                  else {
                          playVideo("../assets/video/flash/myvideo_512.flv");
                          trace("play high");
                  }
          }
          private function playVideo(vidName:String):void {
                  // Construct NetConnection
              var nc:NetConnection = new NetConnection();
              nc.connect(null);
  
              // Flash is looking for an onMetaData method, route all calls to an object
              var metaObject:Object = new Object();
              metaObject.onMetaData = onMetaData;
  
              // Construct NetStream and connect to flow through NetConnection
              var ns:NetStream = new NetStream(nc);
              ns.bufferTime = 15;
              ns.play(vidName);
              // Route all onMetaData calls on NetStream to the metaObject
              ns.client = metaObject;
  
              // Construct video object with dimensions
              var video:Video = new Video(160, 120);
  
              // Attach video to the NetStream, and add to the display list
              video.attachNetStream(ns);
              addChild(video);
          }
      }
  }
  


(C) Æliens 27/08/2009

You may not copy or print any of this material without explicit permission of the author or the publisher. In case of other copyright issues, contact the author.