我已经查看了我可以找到的每个使用AVAssetExportSession
设置元数据的示例,但即使音频导出工作正常(结果音频文件播放正常),仍然没有随文件导出的元数据。我正在使用Xcode 4.5,目标构建iOS 5,测试设备iOS 6.请看下面我正在使用的代码,请让我知道我做错了什么。
头
// for metadata export
NSArray *MyMetadata;
AVMutableMetadataItem *common1;
AVMutableMetadataItem *common2;
AVMutableMetadataItem *common3;
AVMutableMetadataItem *common4;
实施
AVAsset *asset = [AVAsset assetWithURL:audioFileInput];
AVAssetExportSession *exportSession = [AVAssetExportSession exportSessionWithAsset:asset presetName:AVAssetExportPresetPassthrough];
if (!exportSession) {
return;
}
CMTime startTime = CMTimeMake((int)(floor(fileStartMarker * 100)), 100);
CMTime stopTime = CMTimeMake((int)(ceil(fileEndMarker * 100)), 100);
CMTimeRange exportTimeRange = CMTimeRangeFromTimeToTime(startTime, stopTime);
exportSession.outputURL = audioFileOutput;
exportSession.outputFileType = @"com.apple.coreaudio-format";
exportSession.timeRange = exportTimeRange;
// define meta data for file
// Common metadata
common1 = [[AVMutableMetadataItem alloc] init]; // Title
common1.keySpace = AVMetadataKeySpaceCommon;
common1.key = AVMetadataCommonKeyTitle;
common1.value = @"Title Test Value";
common2 = [[AVMutableMetadataItem alloc] init]; // Description
common2.keySpace = AVMetadataKeySpaceCommon;
common2.key = AVMetadataCommonKeyDescription;
common2.value = @"Description Test Value";
common3 = [[AVMutableMetadataItem alloc] init]; // Creation Date
common3.keySpace = AVMetadataKeySpaceCommon;
common3.key = AVMetadataCommonKeyCreationDate;
common3.value = @"Creation Date Test Value";
common4 = [[AVMutableMetadataItem alloc] init]; // Software
common4.keySpace = AVMetadataKeySpaceCommon;
common4.key = AVMetadataCommonKeySoftware;
common4.value = @"My File Trimmer";
MyMetadata = [[NSArray alloc] initWithObjects:common1, common2, common3, common4, nil];
exportSession.metadata = MyMetadata;
[common1 release];
[common2 release];
[common3 release];
[common4 release];
[exportSession exportAsynchronouslyWithCompletionHandler:^{
if (exportSession.status == AVAssetExportSessionStatusCompleted) {
// export done
}
else if (exportSession.status == AVAssetExportSessionStatusFailed) {
// export failed
}
}];
[MyMetadata release];
答案 0 :(得分:1)
您是否尝试过设置标识符?
喜欢:
let authorMeta = AVMutableMetadataItem()
authorMeta.identifier = AVMetadataCommonIdentifierAuthor
authorMeta.key = AVMetadataQuickTimeMetadataKeyAuthor
authorMeta.keySpace = AVMetadataKeySpaceCommon
authorMeta.value = "NFer"