ios - ¿Cómo usar adecuadamente AVAssetExportSession para establecer metadatos para un activo de audio?
metadata (1)
He analizado cada ejemplo que puedo encontrar para establecer metadatos usando AVAssetExportSession
, pero aunque la exportación de audio funciona bien (el archivo de audio resultante se reproduce AVAssetExportSession
), aún no se exportan metadatos con el archivo. Estoy usando Xcode 4.5, objetivo construir iOS 5, dispositivo de prueba iOS 6. Por favor, vea el código que estoy usando a continuación, y por favor hágamelo saber lo que estoy haciendo mal.
encabezamiento
// for metadata export
NSArray *MyMetadata;
AVMutableMetadataItem *common1;
AVMutableMetadataItem *common2;
AVMutableMetadataItem *common3;
AVMutableMetadataItem *common4;
implementación
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];
¿Has intentado configurar el identificador?
me gusta:
let authorMeta = AVMutableMetadataItem()
authorMeta.identifier = AVMetadataCommonIdentifierAuthor
authorMeta.key = AVMetadataQuickTimeMetadataKeyAuthor
authorMeta.keySpace = AVMetadataKeySpaceCommon
authorMeta.value = "NFer"