我正在尝试使用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;
}
}];
答案 0 :(得分:3)
我已经回答了我自己的问题。我正在更改文件信息的文件是MP4格式,所以我也将文件类型输出设置为MP4。这不会导出元数据,将setOutputFileType
更改为AVFileTypeAppleM4V
工作就好了,有趣的是输出文件仍然是MP4,而不是M4V。