È possibile utilizzare TimedMetadata quando il tempo di riproduzione corrente corrisponde all'ora di inizio.
Per utilizzare i file salvati PTTimedMetadata
durante la riproduzione, utilizzare il dizionario salvato da Archivia gli oggetti metadati temporizzati durante l’invio.
Estrarre e aggiornare il tempo di riproduzione corrente da questa notifica e trovare tutte le PTTimedMetadata
oggetti con orari di inizio corrispondenti al tempo di riproduzione corrente.
È possibile utilizzare questi oggetti per completare varie azioni.
Ad esempio:
- (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];
}
}
}
Svuotamento periodico non aggiornato PTTimedMetadata
dall'elenco per impedire che la memoria cresca continuamente.