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 actionscript_video_06_player extends Sprite { private var testLoader:URLLoader; private var timeStart:Number; public function 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); } } }