Ignore:
Timestamp:
07/22/08 17:24:41 (5 years ago)
Author:
jeroen
Message:

fixed a string of bugs (see trac), notably yt-nosound, no metadata = no video and rtmp folder structures

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/as3/com/jeroenwijering/models/HTTPModel.as

    r39 r45  
    88import com.jeroenwijering.models.ModelInterface; 
    99import com.jeroenwijering.player.Model; 
     10import com.jeroenwijering.utils.NetClient; 
    1011import flash.events.*; 
    1112import flash.display.DisplayObject; 
     
    5960                stream.addEventListener(AsyncErrorEvent.ASYNC_ERROR,metaHandler); 
    6061                stream.bufferTime = model.config['bufferlength']; 
    61                 stream.client = this; 
     62                stream.client = new NetClient(this); 
    6263                video = new Video(320,240); 
    6364                video.attachNetStream(stream); 
     
    8081                var off = 0; 
    8182                if(keyframes === null) { 
    82                         errorHandler(new ErrorEvent(ErrorEvent.ERROR,false,false,"This file has no seekpoints metadata.")); 
    83                         return 0; 
     83                        return off; 
    8484                } 
    8585                for (var i=0; i< keyframes.times.length; i++) { 
     
    146146 
    147147 
    148         /** Get textdata from netstream. **/ 
    149         public function onImageData(info:Object) { 
    150                 var dat = new Object(); 
    151                 for(var i in info) {  
    152                         dat[i] = info[i]; 
    153                 } 
    154                 model.sendEvent(ModelEvent.META,dat); 
    155         }; 
    156  
    157  
    158148        /** Get metadata information from netstream class. **/ 
    159         public function onMetaData(info:Object) { 
    160                 if(h264) { return; } 
    161                 if(info.width) { 
    162                         video.width = info.width; 
    163                         video.height = info.height; 
    164                         model.mediaHandler(video); 
    165                 } else if(info.videodatarate) { 
    166                         video.width = 320; 
    167                         video.height = 240; 
    168                         model.mediaHandler(video); 
    169                 } else {  
    170                         model.mediaHandler(); 
    171                 } 
    172                 if(info.seekpoints) { 
    173                         h264 = true; 
    174                         keyframes = new Object(); 
    175                         keyframes.times = new Array(); 
    176                         keyframes.filepositions = new Array(); 
    177                         for (var j in info.seekpoints) { 
    178                                 keyframes.times.push(Number(info.seekpoints[j]['time'])); 
    179                                 keyframes.filepositions.push(Number(info.seekpoints[j]['offset'])); 
    180                         } 
    181                 } else if(info.keyframes) { 
    182                         keyframes = info.keyframes; 
    183                 } 
    184                 var dat = new Object(); 
    185                 for(var i in info) { 
    186                         dat[i] = info[i]; 
    187                 } 
    188                 if(keyframes) {  
    189                         delete dat.seekpoints; 
    190                         dat.keyframes = ''; 
    191                         for(var k=0; k<keyframes.times.length; k++) { 
    192                                 dat['keyframes'] += ','+keyframes.times[k]+':'+keyframes.filepositions[k]; 
    193                         } 
    194                 } 
    195                 model.sendEvent(ModelEvent.META,dat); 
    196                 if(model.playlist[model.config['item']]['start'] > 0) { 
    197                         seek(model.playlist[model.config['item']]['start']); 
    198                 } 
    199         }; 
    200  
    201  
    202         /** Get textdata from netstream. **/ 
    203         public function onTextData(info:Object) { 
    204                 var dat = new Object(); 
    205                 for(var i in info) {  
    206                         dat[i] = info[i]; 
     149        public function onData(dat:Object) { 
     150                if(dat.type == 'metadata' && !h264) { 
     151                        if(dat.width) { 
     152                                video.width = dat.width; 
     153                                video.height = dat.height; 
     154                                model.mediaHandler(video); 
     155                        } else { 
     156                                model.mediaHandler(); 
     157                        } 
     158                        if(dat.seekpoints) { 
     159                                h264 = true; 
     160                                keyframes = new Object(); 
     161                                keyframes.times = new Array(); 
     162                                keyframes.filepositions = new Array(); 
     163                                for (var j in dat.seekpoints) { 
     164                                        keyframes.times.push(Number(dat.seekpoints[j]['time'])); 
     165                                        keyframes.filepositions.push(Number(dat.seekpoints[j]['offset'])); 
     166                                } 
     167                        } else if(dat.keyframes) { 
     168                                keyframes = dat.keyframes; 
     169                        } 
     170                        if(keyframes) { 
     171                                delete dat.seekpoints; 
     172                                dat.keyframes = ''; 
     173                                for(var k=0; k<keyframes.times.length; k++) { 
     174                                        dat['keyframes'] += ','+keyframes.times[k]+':'+keyframes.filepositions[k]; 
     175                                } 
     176                        } 
     177                        if(model.playlist[model.config['item']]['start'] > 0) { 
     178                                seek(model.playlist[model.config['item']]['start']); 
     179                        } 
    207180                } 
    208181                model.sendEvent(ModelEvent.META,dat); 
Note: See TracChangeset for help on using the changeset viewer.