Próbuję zidentyfikować różne elementy metadanych wideo na iPadzie. Do tej pory udało mi się z powodzeniem wykorzystać biblioteki AVAsset do znalezienia pliku i wygenerować tablicę elementów AVMetadataItems przy użyciu metadataForFormat:
. W pliku znaleziono tylko formaty danych użytkownika iTunes i Quicktime. Problem polega na tym, że mam te informacje, nie mam możliwości zidentyfikowania tego, co jest. Zamierzałem załadować słownik z informacją, indeksowaną przez klucz metadanych, ale użycie właściwości 01MAVMetadataItem wydaje się nie działać poprawnie, jak gdyby zwracała liczbę (debugger mówi, że jest NSCFNumber). Oto przykładowy kod, co robię:Pobieranie nazwy klucza w AVMetadataItem dla zestawu AVA w systemie iOS
ALAssetRepresentation *representation = [[valAsset defaultRepresentation] retain];
NSURL *url = [representation url];
AVURLAsset *aAsset = [[AVURLAsset URLAssetWithURL:url options:nil] retain];
metaDataDict = [[NSMutableDictionary dictionary] retain];
NSArray *fmtmetadata = [aAsset metadataForFormat:@"com.apple.itunes"];
for (AVMetadataItem* meta in fmtmetadata)
{
[metaDataDict setObject:[meta stringValue]
forKey:[meta key]];
NSLog(@"metadata: key = %@", [meta key]);
}
To daje następujące dane wyjściowe w konsoli debuggera:
metadata: key = -1452383891
metadata: key = -1452841618
metadata: key = 1684370275
metadata: key = 1818518899
metadata: key = 1937009003
metadata: key = -1453101708
Nawiasem mówiąc, zmieniając linię NSLog czytać:
NSLog(@"metadata: %@", meta);
daje nam dane wyjściowe:
metadata: keySpace=itsk, key=desc, commonKey=(null), locale=(null), value=This is the Description of the Video, time={INVALID}, duration={INVALID}, extras={
dataType = 1;
}
Każda pomoc jest bardzo doceniana!
wielkie, dzięki dla odpowiedzi, miałem przeczucie co do tego ... jakiś pomysł, czy istnieje metoda ich dekodowania? – wideize
Hmm .. to jest niesprawdzone, ale myślę, że coś 'klucza NSInteger = [meta key];' ' NSString * keyString = [NSString stringWithFormat "% 4s" @, & key]' powinno działać. – tundrabot
Dzięki ... Oto, co zrobiłem: NSUInteger akey = NSSwapInt ([(NSNumber *) [klucz meta] unsignedIntegerValue]); NSString * keyString = [NSString stringWithFormat: @ "% .s4s", &akey]; – wideize