Almacenar objetos de metadatos temporizados a medida que se envían

La aplicación debe utilizar los objetos PTTimedMetadata adecuados en los momentos apropiados.

Durante el análisis de contenido, que ocurre antes de la reproducción, TVSDK identifica las etiquetas suscritas y notifica a la aplicación sobre estas etiquetas. El tiempo asociado a cada PTTimedMetadata es el tiempo absoluto en la cronología de reproducción.

La aplicación debe completar las siguientes tareas:

  1. Realice un seguimiento del tiempo de reproducción actual.

  2. Haga coincidir el tiempo de reproducción actual con los objetos PTTimedMetadata distribuidos.

  3. Utilice el PTTimedMetadata donde la hora de inicio es igual al tiempo de reproducción actual.

    NOTA

    El código siguiente supone que solo hay una instancia PTTimedMetadata a la vez. Si hay varias instancias, la aplicación debe guardarlas correctamente en un diccionario. Un método es crear una matriz en un momento determinado y almacenar todas las instancias en esa matriz.

    El siguiente ejemplo muestra cómo guardar PTTimedMetadata objetos en un NSMutableDictionary (timedMetadataCollection) clave por la hora de inicio de cada timedMetadata.

    NSMutableDictionary *timedMetadataCollection; 
    
    - (void)onMediaPlayerSubscribedTagIdentified:(NSNotification *)notification 
    { 
        if (!timedMetadataCollection) 
        { 
            timedMetadataCollection = [[NSMutableDictionary alloc] init]; 
        } 
        NSDictionary *userInfo = [notification userInfo]; 
        PTTimedMetadata *timedMetadata = [(PTTimedMetadata *)[userInfo objectForKey:PTTimedMetadataKey] retain]; 
        if ([timedMetadata.name  isEqualToString: @"#EXT-OATCLS-SCTE35"]) 
        { 
             NSLog(@"Adding timedMetadata %@ to timedMetadataCollection with time                      
                     %f",timedMetadata.name,CMTimeGetSeconds(timedMetadata.time)); 
    
            NSNumber *timedMetadataStartTime = [NSNumber numberWithInt:(int)CMTimeGetSeconds(timedMetadata.time)]; 
            [timedMetadataCollection setObject:timedMetadata forKey:timedMetadataStartTime]; 
        } 
        [timedMetadata release]; 
    }
    

Análisis de las etiquetas ID3 de Nielsen

Para extraer la etiqueta ID3 para analizarla, utilice lo siguiente en el método onMediaPlayerSubscribedTagIdentified:

(void)onMediaPlayerSubscribedTagIdentified:(NSNotification *)notification 
{ 
NSDictionary *userInfo = [notification userInfo]; 
PTTimedMetadata *timedMetadata = (PTTimedMetadata *)[userInfo objectForKey:PTTimedMetadataKey]; 
if (timedMetadata.type == PTTimedMetadataTypeID3) 
Unknown macro: { PTMetadata *metadata = (PTMetadata *)timedMetadata; NSString * nstr = [[NSString alloc] initWithFormat} 
 
}

Después de analizar la etiqueta ID3, extraiga los metadatos específicos de Nielsen mediante lo siguiente:

    (NSString *)parseNielsenUrlFromID3Tag:(NSString *)str 
    { 
    /* ID3 tag <AVMetadataItem: 0x15e58e60, identifier=id3/PRIV, keySpace=org.id3, key class = __NSCFString, key=PRIV, commonKey=(null), extendedLanguageTag=(null), dataType=(null), time= {110265598/4410000 = 25.004} 
 
    , duration= 
    {INVALID} 
 
    , startDate=(null), extras= 
    { info = "www.nielsen.com/X100zdCIGeIlgZnkYj6UvQ==/pI-X5FFk07770SXf2ZbI6g==/CE0C6​1TsDo0jIrNn9N2yTPe6nVG3dHZHfgS52fJeQjf9fJCga9tj4OW4NXPZ9fI1mx0gfYUPBXnjqolHemZPtn_FCoNg​8Dqw8-Auruf15fU04pJfXTTN0IgZ4iWBmeRiPpS9X100zdCIGeIlgZnkYj6UvVjmPIdY5jyRQTA=/00000/21778/00"; } 
 
    , value length=1> 
    */ 
 
NSString *nielsenStr = nil; 
for (NSString *keyValuePairString in [str componentsSeparatedByString:@", "]) 
{ 
if([keyValuePairString rangeOfString:@"nielsen.com"].location != NSNotFound) 
{ // Nielsen NSRange start = [keyValuePairString rangeOfString:@"\""]; NSRange end = [keyValuePairString rangeOfString:@"\";"]; nielsenStr = [keyValuePairString substringWithRange:NSMakeRange(start.location + 1, end.location-start.location)]; } 
 
} 
return nielsenStr; 
}

En esta página

Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now