PDA

View Full Version : FLV Player Help



vizun
July 23rd, 2007, 09:29 PM
Hello, i'm making a video player, and I'm having trouble getting the total time of the flv file. When i just test the movie, it gets and fires the metadata event and works, but whne i upload to my server and try it, it never gets the metadata, nor can i use player.totalTime (because it = 0). Now this happens the first time i view the page, but after i let it play, and then refresh the page the metadata event goes. I'm guessing this is because the flv has been completely downloaded, but i don't know why this would effect the metadata. Anyways, i need some help on this, getting the totalTime of the flv, so i would appreciate anything.

vizun
July 23rd, 2007, 09:42 PM
Here's the code, in case that helps anyone help me :p



Stage.align = "LT";
Stage.scaleMode = "noScale";

///////////////////////
_global.jlog = function(txt) {
getURL("javascript:console.log('" + txt + "');");
trace(txt);
}
///////////////////////

// PARAMETERS (FlashVars)
var videoURL:String = "videos/ZackSnyderPromo.flv";
if (_level0.p_videoURL != undefined) {
videoURL = _level0.p_videoURL;
}
var autoPlay_ = false;
if ((_level0.p_autoPlay_ != undefined) && (_level0.p_autoPlay_ == "True")) {
autoPlay_ = true;
}
var playerHeight:Number = 290;
if (_level0.p_playerHeight != undefined) {
playerHeight = _level0.p_playerHeight;
}
var playerWidth:Number = 480;
if (_level0.p_playerWidth != undefined) {
playerWidth = _level0.p_playerWidth;
}
var bgColor:String = "0xFFFFFF";
if(_level0.p_bgColor != undefined) {
bgColor = _level0.p_bgColor;
}
colorChange = new Color(_root.base);
colorChange.setRGB(bgColor);

var isFullscreen:Boolean = false;
if (_level0.p_isFullscreen == "True") {
isFullscreen = true;
controls.fullscreenOpen._visible = false;
controls.fullscreeClose._visible = true;
}
else {
controls.fullscreenClose._visible = false;
controls.fullscreenOpen._visible = true;
}
var fullscreenHeight:Number;
var fullscreenWidth:Number;
/////


// LISTENER OBJECT
var prevState:String = "";
var listenerObj:Object = new Object();
listenerObj.stateChange = function(e:Object):Void {
trace(prevState + " -> " + player.state);
if(player.state == "connectionError") {
trace("There has been an Error: The File could not be loaded");
player.close();
}
if(prevState == "loading") {
player._x = ((_root._width / 2) - (player._width / 2));
player._y = (((_root.height - 63) / 2) - (player._height / 2));
}
prevState = player.state;
}
listenerObj.metadataReceived = function(eventObject:Object):Void {
trace("MetaData reached");
trace("Height is " + player.metadata.height);
trace("Width is " + player.metadata.width);
mdata.text = "MetaData reached";
duration = player.metadata.duration;
//_global.jlog("metadataReceived: " + duration);
}
listenerObj.ready = function(ev:Object):Void {
trace("Total Playtime: " + player.totalTime);
mdata.text = player.totalTime;
//_global.jlog("ready: " + player.totalTime);
}
listenerObj.playheadUpdate = function(e:Object):Void {
trace(player.totalTime);
mdata.text = player.totalTime;
}
/////

base._width = playerWidth;
base._height = playerHeight;
controlBase._y = playerHeight - controlBase._height;
controlBase._width = playerWidth;
controls.timelineBase.timelineMask._xscale = 0;
controls._x = ((playerWidth / 2) - (controls._width / 2));
controls._y = playerHeight - controls._height;
loading._x = ((playerWidth / 2) - (loading._width / 2));
loading._y = ((playerHeight - controls._height) / 2);

player.maintainAspectRatio = true;
player.bufferTime = 5;
player.addEventListener("stateChange", listenerObj);
player.addEventListener("metadataReceived", listenerObj);
player.addEventListener("ready", listenerObj);
player.addEventListener("playheadUpdate", listenerObj);
player.height = (playerHeight - controlBase._height);
player.width = playerWidth;
player.contentPath = videoURL;
//player.load(videoURL);
player.autoPlay = autoPlay_;
player.autoRewind = false;

// BUTTONS
controls.pausebutton.onPress = function():Void {
if(player.state == "playing") {
player.pause();
}
}

controls.playbutton.onPress = function():Void {
if(player.state != "playing") {
player.play();
}
}

controls.stopbutton.onPress = function():Void {
if(player.state != "stopped") {
player.seek(0)
player.stop();
}
}

controls.fullscreenOpen.onPress = function():Void {
player.stop();
player.close();
var js:String = "userW=screen.availWidth; middleW=userW/2 - 700; userH=screen.availHeight; middleH=userH/2 - 384; if(userW>1600 ){winw=1400; winh=768;} else {winw=screen.availWidth; winh=screen.availHeight;} ";
getURL("javascript:" + js + " window.open('sonyplayer_popup.php?video=ZackSnyder Promo.flv&isFullscreen=True&playerWidth=' + (winw - 10) + '&playerHeight=' + (winh - 40) + '&player=orig','win','width='+winw+',height='+winh+' , top=40, left=30,toolbar=no,scrollbars=yes'); void(0); win.focus();");
}

controls.fullscreenClose.onPress = function():Void {
player.stop();
getURL("javascript: javascript:window.opener=self;window.close();");
}
/////

// UPDATE VIDEO STATUS
var playheadConstraint:Number = 445;
controls.timelineBase.timelineWhite.setMask(contro ls.timelineBase.timelineMask);
controls.volumeSlider.volumeWhite.setMask(controls .volumeSlider.volumeMask);
controls.timelineBase.loadingWhite.setMask(control s.timelineBase.loadingMask);
controls.timelineBase.loadingWhite._alpha = 10;
player.onEnterFrame = enterFunction;

function enterFunction():Void {
if(duration != 0) {
var posPercent:Number = (player.playheadTime / duration);
controls.timelineBase.timelineMask._xscale = posPercent * 100;
controls.timelineBase.timelinePlayhead._x = Math.ceil((playheadConstraint * posPercent) + 8);
}
else {
//playerState.text =
}
}

controls.timelineBase.timelinePlayhead.onPress = function():Void {
delete player.onEnterFrame;
startDrag(this, false, 8, this._y, playheadConstraint, this._y);
}

controls.timelineBase.timelinePlayhead.onRelease = controls.timelineBase.timelinePlayhead.onReleaseOu tside = function():Void {
stopDrag();
var seekTime:Number = (controls.timelineBase.timelinePlayhead._x / playheadConstraint) * 100;
if(((player.bytesLoaded / player.bytesTotal) * 100) > (seekTime )) {
player.seekPercent(seekTime);
if(player.state != "playing") {
player.play();
}
trace(player.totalTime);
}
else {
player.seekPercent(seekTime - 5);
}
player.onEnterFrame = enterFunction;
}

controls.timelineBase.loadingMask.onEnterFrame = function():Void {
var loadedPercent:Number = (player.bytesLoaded / player.bytesTotal) * 100;
controls.timelineBase.loadingMask._xscale = loadedPercent;
if(loadedPercent >= 100) {
delete this.onEnterFrame;
}
}
/////

// UPDATE VOLUME STATUS
var volumeConstraint:Number = 100;
controls.volumeSlider.volumePlayhead.onPress = function():Void {
startDrag(this, false, 15, this._y, volumeConstraint, this._y);
}

controls.volumeSlider.volumePlayhead.onRelease = controls.volumeSlider.volumePlayhead.onReleaseOuts ide = function():Void {
stopDrag();
var volumePercent:Number = ((controls.volumeSlider.volumePlayhead._x - 15) / volumeConstraint);
player.volume = Math.floor(volumePercent * 100);
}

controls.volumeSlider.onEnterFrame = function():Void {
//Volume x constraints are [15, 100]
controls.volumeSlider.volumeMask._xscale = Math.ceil(((controls.volumeSlider.volumePlayhead._ x - 15) / 85) * 100);
}
/////

vizun
July 24th, 2007, 06:22 PM
** Bump ** ??