topical media & game development
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.