Changeset 1159


Ignore:
Timestamp:
07/15/10 01:37:24 (3 years ago)
Author:
zach
Message:
  • Added hd.streamer flashvar #950
  • Fixed RTMP switching issue #978
  • Fixed SD revert on complete issue #970
Location:
plugins/hd/v5/trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • plugins/hd/v5/trunk/hd.xml

    r905 r1159  
    2323                </flashvar> 
    2424                <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> 
    2533                        <name>fullscreen</name> 
    2634                        <default>false</default> 
  • plugins/hd/v5/trunk/src/com/longtailvideo/plugins/hd/HD.as

    r1081 r1159  
    11 
    22package com.longtailvideo.plugins.hd { 
    3          
     3 
    44        import com.longtailvideo.jwplayer.events.MediaEvent; 
     5        import com.longtailvideo.jwplayer.events.PlayerStateEvent; 
    56        import com.longtailvideo.jwplayer.events.PlaylistEvent; 
    67        import com.longtailvideo.jwplayer.model.IPlaylist; 
     
    6061                        _player.addEventListener(MediaEvent.JWPLAYER_MEDIA_TIME, timeHandler); 
    6162                        _player.addEventListener(PlaylistEvent.JWPLAYER_PLAYLIST_ITEM, itemHandler); 
    62                         _player.addEventListener(MediaEvent.JWPLAYER_MEDIA_COMPLETE, completeHandler); 
     63                        _player.addEventListener(PlayerStateEvent.JWPLAYER_PLAYER_STATE, stateHandler); 
    6364 
    6465                        if (_player.config.dock) { 
     
    142143                private function itemHandler(evt:Event=null):void { 
    143144                        if (_currentItem != _player.playlist.currentItem) { 
     145                                if (_currentItem != null){ 
     146                                        resetItem();     
     147                                } 
    144148                                _currentItem = _player.playlist.currentItem; 
    145149                                if (!_currentItem.hasOwnProperty('hd.originalfile')) { 
    146150                                        _currentItem['hd.originalfile'] = _currentItem.file; 
    147151                                        _currentItem['hd.originalstart'] = _currentItem.start; 
     152                                        _currentItem['hd.originalstreamer'] = _currentItem.streamer; 
    148153                                } 
    149154                                // Prevents multiple item events from being fired when playlist is reloaded 
     
    152157                                } else { 
    153158                                        var stateFile:String = stateFile(); 
     159                                        var stateStreamer:String = stateStreamer(); 
    154160                                        if (stateFile){ 
    155161                                                _player.playlist.currentItem['file'] = stateFile; 
     162                                        } 
     163                                        if (stateStreamer){ 
     164                                                _player.playlist.currentItem['streamer'] = stateStreamer; 
    156165                                        } 
    157166                                } 
     
    164173                        if (swapFile) { 
    165174                                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                                        } 
    167181                                } 
    168182                        } 
    169183                        setUI(); 
    170184                } 
    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{ 
    173195                        if (_currentItem['hd.originalfile']) { 
    174196                                _currentItem.file = _currentItem['hd.originalfile']; 
    175197                                _currentItem.start = _currentItem['hd.originalstart']; 
     198                                _currentItem.streamer = _currentItem['hd.originalstreamer']; 
    176199                        }        
    177200                } 
     
    179202 
    180203                /** 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 { 
    182205                        _swapped = true; 
    183206                        var newList:Array = playlistToArray(_player.playlist); 
     
    186209                                newItem['hd.originalfile'] = newItem.file;       
    187210                                newItem['hd.originalstart'] = newItem.start;     
     211                                newItem['hd.originalstreamer'] = newItem.streamer; 
    188212                        } 
    189213                        newItem.file = newFile; 
    190214                        newItem.start = _position; 
     215                        newItem.streamer = newStreamer; 
    191216                         
    192217                        // Load a new playlist instead of changing the item's file property. 
     
    215240                                } else if (_currentItem.hasOwnProperty('hd.file') || config.hasOwnProperty('file')) { 
    216241                                        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; 
    217265                                } else { 
    218266                                        return ''; 
     
    243291                        newItem.provider = source.provider; 
    244292                        newItem.start = source.start; 
     293                        newItem.streamer = source.streamer; 
    245294                        newItem.tags = source.tags; 
    246295                        newItem.title = source.title; 
     296                        newItem.type = source.type; 
    247297                        return newItem; 
    248298                } 
  • plugins/hd/v5/trunk/testing/files/hd.xml

    r1083 r1159  
    9797                        <jwplayer:autostart>true</jwplayer:autostart> 
    9898                </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> 
    99129        </channel> 
    100130</rss> 
Note: See TracChangeset for help on using the changeset viewer.