Changeset 1159
- Timestamp:
- 07/15/10 01:37:24 (3 years ago)
- Location:
- plugins/hd/v5/trunk
- Files:
-
- 4 edited
-
hd.swf (modified) (previous)
-
hd.xml (modified) (1 diff)
-
src/com/longtailvideo/plugins/hd/HD.as (modified) (9 diffs)
-
testing/files/hd.xml (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
plugins/hd/v5/trunk/hd.xml
r905 r1159 23 23 </flashvar> 24 24 <flashvar> 25 <name>streamer</name> 26 <default></default> 27 <description> 28 Location of the HD video server the player should use. 29 The regular 'streamer' flashvar holds the location of the fallback server. 30 </description> 31 </flashvar> 32 <flashvar> 25 33 <name>fullscreen</name> 26 34 <default>false</default> -
plugins/hd/v5/trunk/src/com/longtailvideo/plugins/hd/HD.as
r1081 r1159 1 1 2 2 package com.longtailvideo.plugins.hd { 3 3 4 4 import com.longtailvideo.jwplayer.events.MediaEvent; 5 import com.longtailvideo.jwplayer.events.PlayerStateEvent; 5 6 import com.longtailvideo.jwplayer.events.PlaylistEvent; 6 7 import com.longtailvideo.jwplayer.model.IPlaylist; … … 60 61 _player.addEventListener(MediaEvent.JWPLAYER_MEDIA_TIME, timeHandler); 61 62 _player.addEventListener(PlaylistEvent.JWPLAYER_PLAYLIST_ITEM, itemHandler); 62 _player.addEventListener( MediaEvent.JWPLAYER_MEDIA_COMPLETE, completeHandler);63 _player.addEventListener(PlayerStateEvent.JWPLAYER_PLAYER_STATE, stateHandler); 63 64 64 65 if (_player.config.dock) { … … 142 143 private function itemHandler(evt:Event=null):void { 143 144 if (_currentItem != _player.playlist.currentItem) { 145 if (_currentItem != null){ 146 resetItem(); 147 } 144 148 _currentItem = _player.playlist.currentItem; 145 149 if (!_currentItem.hasOwnProperty('hd.originalfile')) { 146 150 _currentItem['hd.originalfile'] = _currentItem.file; 147 151 _currentItem['hd.originalstart'] = _currentItem.start; 152 _currentItem['hd.originalstreamer'] = _currentItem.streamer; 148 153 } 149 154 // Prevents multiple item events from being fired when playlist is reloaded … … 152 157 } else { 153 158 var stateFile:String = stateFile(); 159 var stateStreamer:String = stateStreamer(); 154 160 if (stateFile){ 155 161 _player.playlist.currentItem['file'] = stateFile; 162 } 163 if (stateStreamer){ 164 _player.playlist.currentItem['streamer'] = stateStreamer; 156 165 } 157 166 } … … 164 173 if (swapFile) { 165 174 if (_currentItem.file != swapFile) { 166 swap(swapFile); 175 var swapStreamer:String = stateStreamer(); 176 if (swapStreamer) { 177 swap(swapFile, swapStreamer); 178 } else { 179 swap(swapFile); 180 } 167 181 } 168 182 } 169 183 setUI(); 170 184 } 171 172 private function completeHandler(evt:MediaEvent):void { 185 186 private function stateHandler(evt:PlayerStateEvent):void { 187 if (evt.newstate == PlayerState.IDLE){ 188 if (_currentItem['hd.originalfile']) { 189 _currentItem.start = _currentItem['hd.originalstart']; 190 } 191 } 192 } 193 194 private function resetItem():void{ 173 195 if (_currentItem['hd.originalfile']) { 174 196 _currentItem.file = _currentItem['hd.originalfile']; 175 197 _currentItem.start = _currentItem['hd.originalstart']; 198 _currentItem.streamer = _currentItem['hd.originalstreamer']; 176 199 } 177 200 } … … 179 202 180 203 /** Switch the currently playing file with a new one. **/ 181 private function swap(newFile:String ):void {204 private function swap(newFile:String, newStreamer:String = null):void { 182 205 _swapped = true; 183 206 var newList:Array = playlistToArray(_player.playlist); … … 186 209 newItem['hd.originalfile'] = newItem.file; 187 210 newItem['hd.originalstart'] = newItem.start; 211 newItem['hd.originalstreamer'] = newItem.streamer; 188 212 } 189 213 newItem.file = newFile; 190 214 newItem.start = _position; 215 newItem.streamer = newStreamer; 191 216 192 217 // Load a new playlist instead of changing the item's file property. … … 215 240 } else if (_currentItem.hasOwnProperty('hd.file') || config.hasOwnProperty('file')) { 216 241 return _currentItem.file; 242 } else { 243 return ''; 244 } 245 } 246 } 247 248 /** Which streamer to use, based on the current streamer **/ 249 private function stateStreamer():String { 250 if (config.state) { 251 if (_currentItem.hasOwnProperty('hd.streamer')) { 252 return _currentItem['hd.streamer']; 253 } else if (config.hasOwnProperty('streamer')) { 254 return config['streamer']; 255 } else if (_currentItem.hasOwnProperty('streamer') != '') { 256 return _currentItem.streamer; 257 } else { 258 return ''; 259 } 260 } else { 261 if (_currentItem.hasOwnProperty('hd.originalstreamer')) { 262 return _currentItem['hd.originalstreamer']; 263 } else if (_currentItem.hasOwnProperty('hd.streamer') || config.hasOwnProperty('streamer')) { 264 return _currentItem.streamer; 217 265 } else { 218 266 return ''; … … 243 291 newItem.provider = source.provider; 244 292 newItem.start = source.start; 293 newItem.streamer = source.streamer; 245 294 newItem.tags = source.tags; 246 295 newItem.title = source.title; 296 newItem.type = source.type; 247 297 return newItem; 248 298 } -
plugins/hd/v5/trunk/testing/files/hd.xml
r1083 r1159 97 97 <jwplayer:autostart>true</jwplayer:autostart> 98 98 </item> 99 100 <item> 101 <title>RTMP Streaming HD File w/ HD.streamer</title> 102 <jwplayer:type>RTMP</jwplayer:type> 103 <jwplayer:streamer>rtmp://fms.12E5.edgecastcdn.net/0012E5</jwplayer:streamer> 104 <media:content url="videos/8Juv1MVa-483.mp4" /> 105 <jwplayer:hd.file>videos/8Juv1MVa-67727.mp4</jwplayer:hd.file> 106 <jwplayer:hd.streamer>rtmp://fms.12E5.edgecastcdn.net/0012E6</jwplayer:hd.streamer> 107 </item> 108 109 <item> 110 <title>RTMP Streaming HD File, HD Enabled w/ HD.streamer</title> 111 <jwplayer:type>RTMP</jwplayer:type> 112 <jwplayer:streamer>rtmp://fms.12E5.edgecastcdn.net/0012E5</jwplayer:streamer> 113 <media:content url="videos/8Juv1MVa-483.mp4" /> 114 <jwplayer:hd.file>videos/8Juv1MVa-67727.mp4</jwplayer:hd.file> 115 <jwplayer:hd.state>true</jwplayer:hd.state> 116 <jwplayer:hd.streamer>rtmp://fms.12E5.edgecastcdn.net/0012E6</jwplayer:hd.streamer> 117 </item> 118 119 <item> 120 <title>RTMP Streaming HD File, HD Enabled, Autostart enabled w/ HD.streamer</title> 121 <jwplayer:type>RTMP</jwplayer:type> 122 <jwplayer:streamer>rtmp://fms.12E5.edgecastcdn.net/0012E5</jwplayer:streamer> 123 <media:content url="videos/8Juv1MVa-483.mp4" /> 124 <jwplayer:hd.file>videos/8Juv1MVa-67727.mp4</jwplayer:hd.file> 125 <jwplayer:hd.state>true</jwplayer:hd.state> 126 <jwplayer:autostart>true</jwplayer:autostart> 127 <jwplayer:hd.streamer>rtmp://fms.12E5.edgecastcdn.net/0012E6</jwplayer:hd.streamer> 128 </item> 99 129 </channel> 100 130 </rss>
Note: See TracChangeset
for help on using the changeset viewer.
