使用計時中繼資料

當目前的播放時間符合開始時間時,您可以使用TimedMetadata。

若要在播放期間使用這些保存的PTTimedMetadata對象,請使用儲存計時元資料對象的保存字典,當這些對象被調度時

  1. 從此通知提取並更新當前播放時間,並尋找所有PTTimedMetadata物件的開始時間與當前播放時間相符。

    您可以使用這些物件來完成各種動作。

    例如:

    - (void) onMediaPlayerTimeChange:(NSNotification *)notification 
    { 
        CMTimeRange seekableRange = self.player.seekableRange; 
        if (CMTIMERANGE_IS_VALID(seekableRange)) 
        { 
            int currentTime = (int) CMTimeGetSeconds(self.player.currentTime); 
            NSArray *allKeys = timedMetadataCollection ? [timedMetadataCollection allKeys] : [NSArray array]; 
            NSMutableArray *timedMetadatasToDelete = [[[NSMutableArray alloc] init] autorelease]; 
            int count = [allKeys count]; 
    
            for (int i=count - 1; i > -1; i--) 
            { 
               NSNumber *currTimedMetadataTime = allKeys[i]; 
               if ([currTimedMetadataTime integerValue] == currentTime) 
               { 
                /* 
                    Use the timed metadata here and remove it from the collection. 
                */ 
                 NSLog (@"IN PLAYBACK TIME %i TO EXECUTE TIMEDMETADATA %@ scheduled at time %f",currentTime,currTimedMetadata.name,CMTimeGetSeconds(currTimedMetadata.time)); 
    
                PTTimedMetadata *currTimedMetadata = [timedMetadataCollection objectForKey:currTimedMetadataTime]; 
                [timedMetadatasToDelete addObject:currTimedMetadataTime]; 
               } 
            } 
    
            for (int i=0; i<[timedMetadatasToDelete count]; i++) 
            { 
                NSNumber *timedMetadataToDelete = timedMetadatasToDelete[i]; 
                [timedMetadataCollection removeObjectForKey:timedMetadataToDelete]; 
            } 
        } 
    }
    
  2. 定期刷新清單中的過時PTTimedMetadata實例,以防止記憶體持續增長。

本頁內容