Usar metadatos cronometrados

Puede utilizar TimedMetadata cuando el tiempo de reproducción actual coincida con el tiempo de inicio.

Para utilizar estos elementos guardados PTTimedMetadata durante la reproducción, utilice el diccionario guardado de Almacenar objetos de metadatos cronometrados a medida que se envían.

  1. Extraiga y actualice el tiempo de reproducción actual de esta notificación y busque todos los PTTimedMetadata objetos con tiempos de inicio que coinciden con el tiempo de reproducción actual.

    Puede utilizar estos objetos para completar varias acciones.

    Por ejemplo:

    - (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. Vaciar periódicamente objetos antiguos PTTimedMetadata instancias de la lista para evitar que la memoria crezca continuamente.

En esta página