【问题标题】:Adding metadata to AAC M4A via AVAssetExportSession通过 AVAssetExportSession 将元数据添加到 AAC M4A
【发布时间】:2012-08-12 00:00:59
【问题描述】:

我正在使用 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 但什么也不做。

【问题讨论】:

    标签: iphone ios avaudiorecorder avassetexportsession


    【解决方案1】:

    我遇到了类似的问题,我的输出 m4a 文件有白色图标(而不是黑色)并且无法播放。虽然那是我从原始样本数据创建原始源文件的时候,而不是向它添加元数据的时候。

    我的问题是我没有在我的代码中关闭导出的文件(我只是在调用 close 函数之前终止了应用程序)。一旦我调用了 close 函数,它就开始工作了。你可能想检查一下。

    此外,我发现“使用->Quicktime 打开”很有用,因为它会在文件损坏时给出错误,而在文件损坏时则可以正常播放。比 iTunes 默默地忽略错误更有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-14
      • 1970-01-01
      • 2021-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-05
      相关资源
      最近更新 更多