Changeset 435
- Timestamp:
- 10/11/09 08:23:02 (4 years ago)
- Files:
-
- 13 edited
-
plugins/qualitymonitor/com/jeroenwijering/plugins/QualityMonitor.as (modified) (1 diff)
-
plugins/qualitymonitor/qualitymonitor.swf (modified) (previous)
-
testing/settings.js (modified) (2 diffs)
-
trunk/as3/com/jeroenwijering/models/HTTPModel.as (modified) (1 diff)
-
trunk/as3/com/jeroenwijering/models/ImageModel.as (modified) (4 diffs)
-
trunk/as3/com/jeroenwijering/models/LivestreamModel.as (modified) (1 diff)
-
trunk/as3/com/jeroenwijering/models/RTMPModel.as (modified) (2 diffs)
-
trunk/as3/com/jeroenwijering/models/SoundModel.as (modified) (4 diffs)
-
trunk/as3/com/jeroenwijering/models/VideoModel.as (modified) (1 diff)
-
trunk/as3/com/jeroenwijering/models/YoutubeModel.as (modified) (3 diffs)
-
trunk/as3/com/jeroenwijering/player/Player.as (modified) (1 diff)
-
trunk/as3/player.fla (modified) (previous)
-
trunk/as3/player.swf (modified) (previous)
Legend:
- Unmodified
- Added
- Removed
-
plugins/qualitymonitor/com/jeroenwijering/plugins/QualityMonitor.as
r374 r435 49 49 /** Update quality metrics **/ 50 50 private function check():void { 51 var len:Number = 1; 52 if(view.playlist[view.config['item']]['levels']) { 53 len = view.playlist[view.config['item']]['levels'].length; 51 var lvl:String = '1 of 1'; 52 if(view.playlist[view.config['item']]['levels']) { 53 var arr:Array = view.playlist[view.config['item']]['levels']; 54 var idx:Number = view.config['level']; 55 lvl = (idx+1) + ' of ' + arr.length; 56 lvl += ' (' + arr[idx]['bitrate'] + 'kbps, ' + arr[idx]['width'] + 'px)'; 54 57 } 55 58 field.htmlText = 56 59 '<b>bandwidth:</b> ' + view.config['bandwidth'] + ' kbps<br/>' + 57 '<b>level:</b> ' + (view.config['level']+1) + ' of ' + len+ '<br/>' +60 '<b>level:</b> ' + lvl + '<br/>' + 58 61 '<b>width:</b> '+ view.config['width'] + ' pixels'; 59 62 }; -
testing/settings.js
r434 r435 420 420 61: { 421 421 title:'Snapshot plugin', 422 file:' ../../testing/files/bunny.mp4',422 file:'http://content.bitsontherun.com/videos/6RCvPeUn-329.mp4', 423 423 height:260, 424 424 width:600, 425 425 plugins:'snapshot', 426 'snapshot.script':'http://www.jeroenwijering.com/test/snapshot/create.php' 426 'snapshot.script':'http://demo.bitsontherun.com/snapshot/update.php', 427 'snapshot.bitmap':false 427 428 }, 428 429 62: { … … 432 433 width:600, 433 434 plugins:'flow' 434 },435 90:{},436 91: {437 title:'Smooth streamed MP4',438 file:'http://h264.code-shop.com:8080/bbb.mp4/bbb.ismc',439 type:'smooth',440 height:240,441 width:500442 435 } 443 436 } -
trunk/as3/com/jeroenwijering/models/HTTPModel.as
r388 r435 266 266 private function positionInterval():void { 267 267 var pos:Number = Math.round(stream.time*10)/10; 268 if(pos > position - timeoffset + 5) {269 pos = position - timeoffset + 0.1;270 }271 268 if (mp4) { 272 269 pos += timeoffset; -
trunk/as3/com/jeroenwijering/models/ImageModel.as
r388 r435 30 30 loader = new Loader(); 31 31 loader.contentLoaderInfo.addEventListener(Event.COMPLETE,loaderHandler); 32 loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS,progressHandler);33 32 loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,errorHandler); 34 33 addChild(loader); … … 42 41 loader.load(new URLRequest(item['file']),new LoaderContext(true)); 43 42 model.sendEvent(ModelEvent.STATE,{newstate:ModelStates.BUFFERING}); 44 model.sendEvent(ModelEvent.BUFFER,{percentage:0});45 43 }; 46 44 … … 84 82 model.sendEvent(ModelEvent.TIME,{position:position,duration:item['duration']}); 85 83 } else if (item['duration'] > 0) { 86 pause();84 clearInterval(interval); 87 85 model.sendEvent(ModelEvent.STATE,{newstate:ModelStates.COMPLETED}); 88 86 } 89 };90 91 92 /** Send load progress to player. **/93 private function progressHandler(evt:ProgressEvent):void {94 var pct:Number = Math.round(evt.bytesLoaded/evt.bytesTotal*100);95 model.sendEvent(ModelEvent.BUFFER,{percentage:pct});96 87 }; 97 88 … … 107 98 /** Stop the image interval. **/ 108 99 override public function stop():void { 109 if(loader.contentLoaderInfo.bytesLoaded != loader.contentLoaderInfo.bytesTotal) { 100 clearInterval(interval); 101 try { 110 102 loader.close(); 111 } else{103 } catch(err:Error) { 112 104 loader.unload(); 113 105 } 114 clearInterval(interval);115 106 position = 0; 116 107 model.sendEvent(ModelEvent.STATE,{newstate:ModelStates.IDLE}); -
trunk/as3/com/jeroenwijering/models/LivestreamModel.as
r385 r435 132 132 133 133 134 /** Getters/setters for resizing. These make sure the aspectratios of the wrapper are kept. **/ 135 override public function get width():Number { 136 if(wrapper) { return wrapper.width; } else { return width; } 137 }; 138 override public function set width(val:Number):void { 139 if(wrapper) { wrapper.width = val; } else { super.width = val; } 140 }; 141 override public function get height():Number { 142 if(wrapper) { return wrapper.height; } else { return height; } 143 }; 144 override public function set height(val:Number):void { 145 if(wrapper) { wrapper.height = val; } else { wrapper.height = val; } 146 }; 147 override public function get x():Number { 148 if(wrapper) { return wrapper.x; } else { return x; } 149 }; 150 override public function set x(val:Number):void { 151 if(wrapper) { wrapper.x = val; } else { super.x = val; } 152 } 153 override public function get y():Number { 154 if(wrapper) { return wrapper.y; } else { return y; } 155 } 156 override public function set y(val:Number):void { 157 if(wrapper) { wrapper.y = val; } else { super.y = val; } 158 } 159 160 134 161 } 135 162 -
trunk/as3/com/jeroenwijering/models/RTMPModel.as
r408 r435 105 105 clearInterval(bwinterval); 106 106 } 107 if( getLevel() != model.config['level']) {107 if(item['levels'] && getLevel() != model.config['level']) { 108 108 swap(); 109 109 } … … 365 365 break; 366 366 } 367 model.sendEvent('META',evt.info);367 //model.sendEvent('META',evt.info); 368 368 }; 369 369 -
trunk/as3/com/jeroenwijering/models/SoundModel.as
r388 r435 88 88 model.config['mute'] == true ? volume(0): volume(model.config['volume']); 89 89 model.sendEvent(ModelEvent.STATE,{newstate:ModelStates.BUFFERING}); 90 model.sendEvent(ModelEvent.BUFFER,{percentage:0});91 90 }; 92 91 … … 119 118 channel.addEventListener(Event.SOUND_COMPLETE,completeHandler); 120 119 interval = setInterval(positionInterval,100); 121 model.sendEvent(ModelEvent.STATE,{newstate:ModelStates.PLAYING});122 120 }; 123 121 … … 126 124 protected function positionInterval():void { 127 125 position = Math.round(channel.position/100)/10; 128 if(sound.isBuffering == true && sound.bytesTotal > sound.bytesLoaded) { 129 if(model.config['state'] != ModelStates.BUFFERING) { 130 model.sendEvent(ModelEvent.STATE,{newstate:ModelStates.BUFFERING}); 131 } else { 132 var pct:Number = Math.floor(sound.length/(channel.position+model.config['bufferlength']*1000)*100); 133 model.sendEvent(ModelEvent.BUFFER,{percentage:pct}); 134 } 135 } else if (model.config['state'] == ModelStates.BUFFERING && sound.isBuffering == false) { 126 if (model.config['state'] != ModelStates.PLAYING && channel.position > 0) { 136 127 model.sendEvent(ModelEvent.STATE,{newstate:ModelStates.PLAYING}); 137 128 } … … 156 147 /** Destroy the sound. **/ 157 148 override public function stop():void { 149 clearInterval(loadinterval); 150 clearInterval(interval); 158 151 if(channel) { channel.stop(); } 159 152 try { sound.close(); } catch (err:Error) {} 160 clearInterval(loadinterval);161 clearInterval(interval);162 153 position = 0; 163 154 model.sendEvent(ModelEvent.STATE,{newstate:ModelStates.IDLE}); -
trunk/as3/com/jeroenwijering/models/VideoModel.as
r387 r435 186 186 /** Seek to a new position. **/ 187 187 override public function seek(pos:Number):void { 188 position = pos; 189 clearInterval(interval); 190 stream.seek(position); 191 play(); 188 if(stream && pos < stream.bytesLoaded/stream.bytesTotal*item['duration']) { 189 position = pos; 190 clearInterval(interval); 191 stream.seek(position); 192 play(); 193 } 192 194 }; 193 195 -
trunk/as3/com/jeroenwijering/models/YoutubeModel.as
r388 r435 99 99 loading = true; 100 100 if(connected) { 101 if(outgoing) { 102 var gid:String = getID(item['file']); 103 outgoing.send('AS3_'+unique,"loadVideoById",gid,item['start']); 104 resize(); 105 } 101 var gid:String = getID(item['file']); 102 outgoing.send('AS3_'+unique,"loadVideoById",gid,item['start']); 103 resize(); 106 104 } else { 107 105 loader.load(new URLRequest(getLocation())); … … 166 164 case 3: 167 165 model.sendEvent(ModelEvent.STATE,{newstate:ModelStates.BUFFERING}); 168 model.sendEvent(ModelEvent.BUFFER,{percentage:0});169 166 break; 170 167 } … … 201 198 /** Destroy the youtube video. **/ 202 199 override public function stop():void { 203 outgoing.send('AS3_'+unique,"stopVideo"); 200 if(connected) { 201 outgoing.send('AS3_'+unique,"stopVideo"); 202 } else { 203 loading = false; 204 } 204 205 position = 0; 205 206 model.sendEvent(ModelEvent.STATE,{newstate:ModelStates.IDLE}); -
trunk/as3/com/jeroenwijering/player/Player.as
r410 r435 69 69 id:undefined, 70 70 plugins:undefined, 71 version:'4.6.4 10'71 version:'4.6.435' 72 72 }; 73 73 /** Reference to all stage graphics. **/
Note: See TracChangeset
for help on using the changeset viewer.
