编辑mp4 / m4a文件的元标签

时间:2016-01-03 16:17:38

标签: ios objective-c tags m4a

我想使用ObjC for iOS编辑mp4 / m4a文件中的TitleAuthor标记。

这可能吗?

1 个答案:

答案 0 :(得分:3)

可能不止一种方式,但javascript很简单且有效。

N.B。这会创建一个新文件。 AVAssetExportSession并未真正到位修改。

AVFoundation

此示例适用于#import <AVFoundation/AVFoundation.h> #import <CoreMedia/CoreMedia.h> // ... NSURL *outputURL = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/output.m4a", [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject]]]; [[NSFileManager defaultManager] removeItemAtURL:outputURL error:nil]; NSURL *inputURL = [[NSBundle mainBundle] URLForResource:@"foo" withExtension:@"m4a"]; AVAsset *asset = [AVAsset assetWithURL:inputURL]; AVAssetExportSession *session = [[AVAssetExportSession alloc] initWithAsset:asset presetName:AVAssetExportPresetPassthrough]; session.outputURL = outputURL; session.outputFileType = AVFileTypeAppleM4A; AVMutableMetadataItem *metaTitle = [[AVMutableMetadataItem alloc] init]; metaTitle.identifier = AVMetadataCommonIdentifierTitle; // more in AVMetadataIdentifiers.h metaTitle.dataType = (__bridge NSString *)kCMMetadataBaseDataType_UTF8; // more in CoreMedia/CMMetadata.h metaTitle.value = @"Choon!"; AVMutableMetadataItem *metaArtist = [[AVMutableMetadataItem alloc] init]; metaArtist.identifier = AVMetadataCommonIdentifierArtist; metaArtist.dataType = (__bridge NSString *)kCMMetadataBaseDataType_UTF8; metaArtist.value = @"Me, of course"; session.metadata = @[metaTitle, metaArtist]; [session exportAsynchronouslyWithCompletionHandler:^{ if (session.status == AVAssetExportSessionStatusCompleted) { // hurray } }]; 个文件,您需要将文件扩展名更改为m4amp4更改为outputFileType