我正在使用 AVAudioRecorder 创建和存储 AAC 编码的 .m4a 文件。这会产生一个可播放的 .m4a 文件就好了。然后我想使用 AVAssetExportSession 来处理文件,以便将元数据添加到文件中。下面的代码正在生成一个类似大小的 .m4a 文件(比源文件少 1 KB),但是当它播放时,只有静音。
NSURL* url = [NSURL fileURLWithPath:self.m4aPath];
AVURLAsset* asset = [AVAsset assetWithURL:url];
AVMutableMetadataItem* t = [AVMutableMetadataItem metadataItem];
t.key = AVMetadataCommonKeyTitle;
t.keySpace = AVMetadataKeySpaceCommon;
t.value = @"Unit Test";
NSArray* metadata = [NSArray arrayWithObject:t];
AVAssetExportSession *exportSession = [[AVAssetExportSession alloc] initWithAsset:asset presetName:AVAssetExportPresetAppleM4A];
exportSession.outputURL = [NSURL fileURLWithPath:[[NSFileManager rawRecordingsDirectory] stringByAppendingPathComponent:@"test.m4a"]];
exportSession.outputFileType = AVFileTypeAppleM4A;
exportSession.metadata = metadata;
[exportSession exportAsynchronouslyWithCompletionHandler:^{....}];
还有一条信息:当我在 Finder 中查看源文件和导出文件时,源文件有黑色的 iTunes 图标,而导出的文件有白色的 iTunes 图标。不确定这在实践中意味着什么,但希望它可能会有所帮助。此外,双击源将其添加到 iTunes 并开始播放,而双击导出的打开 iTunes 但什么也不做。