a:43:{s:9:"#provides";s:16:"dojox.av.FLVideo";s:9:"#resource";s:13:"av/FLVideo.js";s:9:"#requires";a:3:{i:0;a:3:{i:0;s:6:"common";i:1;s:13:"dijit._Widget";i:2;s:5:"dijit";}i:1;a:2:{i:0;s:6:"common";i:1;s:17:"dojox.embed.Flash";}i:2;a:2:{i:0;s:6:"common";i:1;s:15:"dojox.av._Media";}}s:16:"dojox.av.FLVideo";a:6:{s:4:"type";s:8:"Function";s:6:"chains";a:2:{s:9:"prototype";a:1:{i:0;s:13:"dijit._Widget";}s:4:"call";a:2:{i:0;s:13:"dijit._Widget";i:1;s:15:"dojox.av._Media";}}s:6:"mixins";a:1:{s:9:"prototype";a:1:{i:0;s:25:"dojox.av._Media.prototype";}}s:7:"summary";s:196:"Inserts a Flash FLV video into the HTML page and provides methods and events for controlling the video. Also plays the H264/M4V codec with a little trickery: change the '.M4V' extension to '.flv'.";s:8:"examples";a:1:{i:0;s:414:"markup:
programmatic: new dojox.av.FLVideo({ initialVolume:.7, mediaUrl:"../resources/Grog.flv" }, "vid"); mediaUrl: String REQUIRED: The Url of the video file that will be played. NOTE: Must be either an absolute URL or relative to the HTML file. Relative paths will be converted to abslute paths";}s:9:"classlike";b:1;}s:25:"dojox.av.FLVideo._swfPath";a:4:{s:9:"prototype";s:16:"dojox.av.FLVideo";s:4:"type";s:3:"Uri";s:7:"summary";s:41:"The path to the video player SWF resource";s:7:"private";b:1;}s:27:"dojox.av.FLVideo.postCreate";a:5:{s:9:"prototype";s:16:"dojox.av.FLVideo";s:4:"type";s:8:"Function";s:6:"source";s:1332:" this._subs = []; this._cons = []; this.mediaUrl = this._normalizeUrl(this.mediaUrl); this.initialVolume = this._normalizeVolume(this.initialVolume); var args = { path:this._swfPath.uri, width:"100%", height:"100%", minimumVersion:9, expressInstall:true, params:{ allowFullScreen:true, wmode:"transparent" }, // only pass in simple variables - no deep objects vars:{ videoUrl:this.mediaUrl, id:this.id, autoPlay:this.autoPlay, volume:this.initialVolume, isDebug:this.isDebug } }; // Setting up dojo.subscribes that listens to events // from the player this._sub("stageClick", "onClick"); this._sub("stageSized", "onSwfSized"); this._sub("mediaStatus", "onPlayerStatus"); this._sub("mediaMeta", "onMetaData"); this._sub("mediaError", "onError"); this._sub("mediaStart", "onStart"); this._sub("mediaEnd", "onEnd"); this._flashObject = new dojox.embed.Flash(args, this.domNode); this._flashObject.onError = function(err){ console.warn("Flash Error:", err); alert(err); }; this._flashObject.onLoad = dojo.hitch(this, function(mov){ this.flashMedia = mov; this.isPlaying = this.autoPlay; this.isStopped = !this.autoPlay; this.onLoad(this.flashMedia); this._initStatus(); this._update(); });";s:7:"summary";s:21:"Initialize the media.";s:9:"classlike";b:1;}s:21:"dojox.av.FLVideo.play";a:5:{s:9:"prototype";s:16:"dojox.av.FLVideo";s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:6:"newUrl";a:2:{s:8:"optional";b:1;s:4:"type";s:6:"String";}}s:6:"source";s:104:" this.isPlaying = true; this.isStopped = false; this.flashMedia.doPlay(this._normalizeUrl(newUrl));";s:7:"summary";s:60:"Plays the video. If an url is passed in, plays the new link.";}s:22:"dojox.av.FLVideo.pause";a:4:{s:9:"prototype";s:16:"dojox.av.FLVideo";s:4:"type";s:8:"Function";s:6:"source";s:98:" this.isPlaying = false; this.isStopped = false; //this.onPause(); this.flashMedia.pause();";s:7:"summary";s:16:"Pauses the video";}s:21:"dojox.av.FLVideo.seek";a:5:{s:9:"prototype";s:16:"dojox.av.FLVideo";s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:4:"time";a:1:{s:4:"type";s:5:"Float";}}s:6:"source";s:29:" this.flashMedia.seek(time);";s:7:"summary";s:39:"Goes to the time passed in the argument";}s:23:"dojox.av.FLVideo.volume";a:6:{s:9:"prototype";s:16:"dojox.av.FLVideo";s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:3:"vol";a:1:{s:4:"type";s:5:"Float";}}s:6:"source";s:273:" if(vol){ if(!this.flashMedia) { this.initialVolume = vol; } this.flashMedia.setVolume(this._normalizeVolume(vol)); } if(!this.flashMedia || !this.flashMedia.doGetVolume) { return this.initialVolume; } return this.flashMedia.getVolume(); // Float ";s:7:"summary";s:73:"Sets the volume of the video to the time in the argument - between 0 - 1.";s:7:"returns";s:5:"Float";}s:23:"dojox.av.FLVideo.onLoad";a:5:{s:9:"prototype";s:16:"dojox.av.FLVideo";s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:3:"mov";a:1:{s:4:"type";s:0:"";}}s:6:"source";s:94:" // summary: // Fired when the SWF player has loaded // NOT when the video has loaded";s:7:"summary";s:66:"Fired when the SWF player has loaded NOT when the video has loaded";}s:29:"dojox.av.FLVideo.onDownloaded";a:5:{s:9:"prototype";s:16:"dojox.av.FLVideo";s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:7:"percent";a:1:{s:4:"type";s:0:"";}}s:6:"source";s:96:" // summary: // Fires the amount of that the media has been // downloaded. Number, 0-100";s:7:"summary";s:69:"Fires the amount of that the media has been downloaded. Number, 0-100";}s:24:"dojox.av.FLVideo.onClick";a:5:{s:9:"prototype";s:16:"dojox.av.FLVideo";s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:3:"evt";a:1:{s:4:"type";s:0:"";}}s:6:"source";s:165:" // summary: // Fires when the player is clicked // Could be used to toggle play/pause, or // do an external activity, like opening a new // window.";s:7:"summary";s:123:"Fires when the player is clicked Could be used to toggle play/pause, or do an external activity, like opening a new window.";}s:27:"dojox.av.FLVideo.onSwfSized";a:5:{s:9:"prototype";s:16:"dojox.av.FLVideo";s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:4:"data";a:1:{s:4:"type";s:0:"";}}s:6:"source";s:88:" // summary: // Fired on SWF resize, or when its // toggled between fullscreen.";s:7:"summary";s:60:"Fired on SWF resize, or when its toggled between fullscreen.";}s:27:"dojox.av.FLVideo.onMetaData";a:5:{s:9:"prototype";s:16:"dojox.av.FLVideo";s:4:"type";s:8:"Function";s:10:"parameters";a:2:{s:4:"data";a:1:{s:4:"type";s:0:"";}s:3:"evt";a:1:{s:4:"type";s:0:"";}}s:6:"source";s:373:" // summary: // The video properties. Width, height, duration, etc. // NOTE: if data is empty, this is an older FLV with no meta data. // Duration cannot be determined. In original FLVs, duration // could only be obtained with Flash Media Server. // NOTE: Older FLVs can still return width and height // and will do so on a second event call";s:7:"summary";s:312:"The video properties. Width, height, duration, etc. NOTE: if data is empty, this is an older FLV with no meta data. Duration cannot be determined. In original FLVs, duration could only be obtained with Flash Media Server. NOTE: Older FLVs can still return width and height and will do so on a second event call";}s:27:"dojox.av.FLVideo.onPosition";a:5:{s:9:"prototype";s:16:"dojox.av.FLVideo";s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:4:"time";a:1:{s:4:"type";s:0:"";}}s:6:"source";s:60:" // summary: // The position of the playhead in seconds ";s:7:"summary";s:39:"The position of the playhead in seconds";}s:24:"dojox.av.FLVideo.onStart";a:5:{s:9:"prototype";s:16:"dojox.av.FLVideo";s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:4:"data";a:1:{s:4:"type";s:0:"";}}s:6:"source";s:131:" // summary: // Fires when video starts // Good for setting the play button to pause // during an autoPlay for example";s:7:"summary";s:96:"Fires when video starts Good for setting the play button to pause during an autoPlay for example";}s:23:"dojox.av.FLVideo.onPlay";a:5:{s:9:"prototype";s:16:"dojox.av.FLVideo";s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:4:"data";a:1:{s:4:"type";s:0:"";}}s:6:"source";s:56:" // summary: // Fires when video starts and resumes";s:7:"summary";s:35:"Fires when video starts and resumes";}s:24:"dojox.av.FLVideo.onPause";a:5:{s:9:"prototype";s:16:"dojox.av.FLVideo";s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:4:"data";a:1:{s:4:"type";s:0:"";}}s:6:"source";s:59:" // summary: // Fires when the pause button is clicked";s:7:"summary";s:38:"Fires when the pause button is clicked";}s:22:"dojox.av.FLVideo.onEnd";a:5:{s:9:"prototype";s:16:"dojox.av.FLVideo";s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:4:"data";a:1:{s:4:"type";s:0:"";}}s:6:"source";s:144:" // summary: // Fires when video ends // Could be used to change pause button to play // or show a post video graphic, like YouTube";s:7:"summary";s:109:"Fires when video ends Could be used to change pause button to play or show a post video graphic, like YouTube";}s:23:"dojox.av.FLVideo.onStop";a:4:{s:9:"prototype";s:16:"dojox.av.FLVideo";s:4:"type";s:8:"Function";s:6:"source";s:120:" // summary: // Fire when the Stop button is clicked // TODO: This is not hooked up yet and shouldn't // fire.";s:7:"summary";s:89:"Fire when the Stop button is clicked TODO: This is not hooked up yet and shouldn't fire.";}s:25:"dojox.av.FLVideo.onBuffer";a:5:{s:9:"prototype";s:16:"dojox.av.FLVideo";s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:11:"isBuffering";a:1:{s:4:"type";s:0:"";}}s:6:"source";s:33:" this.isBuffering = isBuffering;";s:7:"summary";s:85:"Fires a boolean to tell if media is paused for buffering or if buffering has finished";}s:24:"dojox.av.FLVideo.onError";a:6:{s:9:"prototype";s:16:"dojox.av.FLVideo";s:4:"type";s:8:"Function";s:10:"parameters";a:2:{s:4:"data";a:1:{s:4:"type";s:0:"";}s:3:"url";a:1:{s:4:"type";s:0:"";}}s:6:"source";s:178:" // summary: // Fired when the player encounters an error // example: // | console.warn("ERROR-"+data.type.toUpperCase()+":", // | data.info.code, " - URL:", url);";s:7:"summary";s:41:"Fired when the player encounters an error";s:8:"examples";a:1:{i:0;s:88:" console.warn("ERROR-"+data.type.toUpperCase()+":", data.info.code, " - URL:", url);";}}s:25:"dojox.av.FLVideo.onStatus";a:5:{s:9:"prototype";s:16:"dojox.av.FLVideo";s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:4:"data";a:1:{s:4:"type";s:0:"";}}s:6:"source";s:34:" // summary: // Simple status";s:7:"summary";s:13:"Simple status";}s:31:"dojox.av.FLVideo.onPlayerStatus";a:5:{s:9:"prototype";s:16:"dojox.av.FLVideo";s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:4:"data";a:1:{s:4:"type";s:0:"";}}s:6:"source";s:97:" // summary: // The status of the video from the SWF // playing, stopped, bufering, etc.";s:7:"summary";s:69:"The status of the video from the SWF playing, stopped, bufering, etc.";}s:25:"dojox.av.FLVideo.onResize";a:4:{s:9:"prototype";s:16:"dojox.av.FLVideo";s:4:"type";s:8:"Function";s:6:"source";s:40:" // summary: // Fired on page resize";s:7:"summary";s:20:"Fired on page resize";}s:29:"dojox.av.FLVideo._checkBuffer";a:6:{s:9:"prototype";s:16:"dojox.av.FLVideo";s:4:"type";s:8:"Function";s:10:"parameters";a:2:{s:4:"time";a:1:{s:4:"type";s:5:"Float";}s:12:"bufferLength";a:1:{s:4:"type";s:5:"Float";}}s:6:"source";s:655:" if(this.percentDownloaded == 100){ if(this.isBuffering){ this.onBuffer(false); this.flashMedia.doPlay(); } return; } if(!this.isBuffering && bufferLength<.1){ this.onBuffer(true); this.flashMedia.pause(); return; } var timePercentLoad = this.percentDownloaded*.01*this.duration; // check if start buffer needed if(!this.isBuffering && time+this.minBufferTime*.001>timePercentLoad){ this.onBuffer(true); this.flashMedia.pause(); // check if end buffer needed }else if(this.isBuffering && time+this.bufferTime*.001<=timePercentLoad){ this.onBuffer(false); this.flashMedia.doPlay(); }";s:7:"summary";s:194:"Checks that there is a proper buffer time between current playhead time and the amount of data loaded. Works only on FLVs with a duration (not older). Pauses the video while continuing download.";s:7:"private";b:1;}s:24:"dojox.av.FLVideo._update";a:5:{s:9:"prototype";s:16:"dojox.av.FLVideo";s:4:"type";s:8:"Function";s:6:"source";s:416:" var time = Math.min(this.getTime() || 0, this.duration); var dObj = this.flashMedia.getLoaded(); this.percentDownloaded = Math.ceil(dObj.bytesLoaded/dObj.bytesTotal*100); this.onDownloaded(this.percentDownloaded); this.onPosition(time); if(this.duration){ this._checkBuffer(time, dObj.buffer); } // FIXME: need to remove this on destroy setTimeout(dojo.hitch(this, "_update"), this.updateTime);";s:7:"summary";s:78:"Helper function to fire onPosition, check download progress, and check buffer.";s:7:"private";b:1;}s:22:"dojox.av.FLVideo._subs";a:3:{s:8:"instance";s:16:"dojox.av.FLVideo";s:7:"private";b:1;s:7:"summary";s:0:"";}s:22:"dojox.av.FLVideo._cons";a:3:{s:8:"instance";s:16:"dojox.av.FLVideo";s:7:"private";b:1;s:7:"summary";s:0:"";}s:25:"dojox.av.FLVideo.mediaUrl";a:2:{s:8:"instance";s:16:"dojox.av.FLVideo";s:7:"summary";s:0:"";}s:30:"dojox.av.FLVideo.initialVolume";a:2:{s:8:"instance";s:16:"dojox.av.FLVideo";s:7:"summary";s:0:"";}s:29:"dojox.av.FLVideo._flashObject";a:3:{s:8:"instance";s:16:"dojox.av.FLVideo";s:7:"private";b:1;s:7:"summary";s:0:"";}s:37:"dojox.av.FLVideo._flashObject.onError";a:3:{s:8:"instance";s:16:"dojox.av.FLVideo";s:14:"private_parent";b:1;s:7:"summary";s:0:"";}s:36:"dojox.av.FLVideo._flashObject.onLoad";a:3:{s:8:"instance";s:16:"dojox.av.FLVideo";s:14:"private_parent";b:1;s:7:"summary";s:0:"";}s:27:"dojox.av.FLVideo.flashMedia";a:2:{s:8:"instance";s:16:"dojox.av.FLVideo";s:7:"summary";s:0:"";}s:26:"dojox.av.FLVideo.isPlaying";a:2:{s:8:"instance";s:16:"dojox.av.FLVideo";s:7:"summary";s:0:"";}s:26:"dojox.av.FLVideo.isStopped";a:2:{s:8:"instance";s:16:"dojox.av.FLVideo";s:7:"summary";s:0:"";}s:48:"dojox.av.FLVideo.postCreate._flashObject.onError";a:6:{s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:3:"err";a:1:{s:4:"type";s:0:"";}}s:6:"source";s:52:" console.warn("Flash Error:", err); alert(err);";s:8:"instance";s:27:"dojox.av.FLVideo.postCreate";s:14:"private_parent";b:1;s:7:"summary";s:0:"";}s:28:"dojox.av.FLVideo.isBuffering";a:2:{s:8:"instance";s:16:"dojox.av.FLVideo";s:7:"summary";s:0:"";}s:34:"dojox.av.FLVideo.percentDownloaded";a:2:{s:8:"instance";s:16:"dojox.av.FLVideo";s:7:"summary";s:0:"";}s:8:"dojox.av";a:2:{s:4:"type";s:6:"Object";s:7:"summary";s:0:"";}s:5:"dojox";a:2:{s:4:"type";s:6:"Object";s:7:"summary";s:0:"";}}