AVAssetExportSession не экспортирует метаданные

Я пытаюсь использовать AVAssetExportSession для изменения метаданных файла, но любые метаданные, которые я пытаюсь использовать, не работают. Когда я передаю пустой массив в [AVAssetExportSession setMetadata:Array];, файл записывается с его неотредактированными метаданными, как и предполагалось, но как только я помещаю AVMetadataItem в массив, метаданные не записываются в новый файл. Вот код, который я использовал:

//NSMutableArray *newArray = [NSMutableArray arrayWithArray:[exportSession metadata]];

AVMutableMetadataItem *addingNew = [[AVMutableMetadataItem alloc] init];
[addingNew setKeySpace:AVMetadataKeySpaceiTunes];
[addingNew setKey:AVMetadataiTunesMetadataKeyUserComment];
[addingNew setValue:[NSString stringWithFormat:@"This is my comment"]];

NSArray *newArray = [NSArray arrayWithObject:addingNew];

NSURL *fileURL = [NSURL fileURLWithPath: outputFile];

[exportSession setMetadata:metaMuteArray];
[exportSession setOutputURL:fileURL];
[exportSession setOutputFileType:AVFileTypeMPEG4];
[exportSession shouldOptimizeForNetworkUse:YES]; //false doesn't work either

[exportSession exportAsynchronouslyWithCompletionHandler:^{
    switch ([exportSession status])
    {
        case AVAssetExportSessionStatusCompleted:
            NSLog(@"Export sucess");
        case AVAssetExportSessionStatusFailed:
            NSLog(@"Export failed: %@", [[exportSession error] localizedDescription]);
        case AVAssetExportSessionStatusCancelled:
            NSLog(@"Export canceled");
        default:
            break;
    }
}];

person Tom O'Reilly    schedule 20.05.2014    source источник


Ответы (1)


Я ответил на свой вопрос. Файл, в котором я изменяю информацию о файле, имеет формат MP4, поэтому я также устанавливаю вывод типа файла в MP4. Это не приведет к экспорту метаданных, изменение setOutputFileType на AVFileTypeAppleM4V отлично справится с задачей, что интересно, выходной файл все еще и MP4, а не M4V.

person Tom O'Reilly    schedule 21.05.2014