Хранение произвольных метаданных в файле QuickTime через AVCaptureMovieFileOutput & AVMutableDataItems - PullRequest
3 голосов
/ 25 ноября 2011

Все:

Я записываю фильм, используя AVCaptureMovieFileOutput.Поскольку происходят различные события, я хочу сохранить название / время события в записываемом фильме QuickTime.Таким образом, у меня может быть 20-30 точек данных, которые я хочу связать с конкретным фильмом.

Моя стратегия состоит в том, чтобы использовать метаданные, но мне не очень повезло.Может кто-нибудь сказать мне, прежде всего:

a) Могу ли я хранить произвольные метаданные или только те ключи и значения, как определено в AVMetadataFormat.h?Я хотел бы иметь возможность хранить массив.

б) Если я могу хранить произвольный массив, какой ключ делает трюк?Если нет, могу ли я хранить свои метаданные в поле для комментариев (некрасиво, но я могу достаточно быстро проанализировать 20-30 баллов).

в) Код, показанный ниже, не работает, так как независимо от того, что я вставляю для item.key (AVMetadataQuickTimeMetadataKeyArtist, AVMetadataCommonKeyArtist или всех других вещей, заканчивающихся в Artist), я никогда ничего не вижу вОкно получения информации iTune.

    - (IBAction)recordEvent:(id)sender {

NSLog(@"Record a metadata point here ...");

// is there any metadata associated with the file yet?
NSArray * existingMetaData = self.aMovieFileOutput.metadata;
NSMutableArray * newMetadataArray = nil;
if(existingMetaData){
    newMetadataArray = [existingMetaData mutableCopy];
} else {
    newMetadataArray = [[NSMutableArray alloc]init];
}

AVMutableMetadataItem * item = [[AVMutableMetadataItem alloc]init];

item.keySpace = AVMetadataKeySpaceCommon;
item.key = AVMetadataQuickTimeMetadataKeyArtist;

item.value = @"Enya, really!"; // in practice this will be the title of (UIButton *)sender

item.time = CMTimeMake(0.0,1.0);

[newMetadataArray addObject:item];
self.aMovieFileOutput.metadata = newMetadataArray;

}

Буду признателен за любой совет.

Спасибо!

1 Ответ

1 голос
/ 29 марта 2012

Хранение метаданных в файле QuickTime с помощью AVCaptureMovieFileOutput & AVMutableDataItems позволяет сохранять значения только для ключей, предопределенных в AVMetadataKeySpaceCommon пространстве ключей, т.е. AVMetadataCommonKey * подобно ключам

Все остальные данные игнорируются

...