我正在使用AVMetaDataItem将ID3标签写入文件
var soundFileMetadata = [AVMetadataItem]() soundFileMetadata.append(createMetadata(AVMetadataiTunesMetadataKeyArtist,"MyArtist")!) soundFileMetadata.append(createMetadata(AVMetadataiTunesMetadataKeySongName,"MySong")!) soundFileMetadata.append(createMetadata(AVMetadataiTunesMetadataKeyAlbum,"MyAlbum")!) soundFileMetadata.append(createMetadata(AVMetadataiTunesMetadataKeyUserGenre,"MyGenre")!) soundFileMetadata.append(createMetadata(AVMetadataiTunesMetadataKeyComposer,"MyComposer")!)
func createMetadata(tagKey: String,_ tagValue: AnyObject?,keySpace:String = AVMetadataKeySpaceiTunes) -> AVMutableMetadataItem? { if let tagValue = tagValue { let tag = AVMutableMetadataItem() tag.keySpace = keySpace tag.key = tagKey tag.value = (tagValue as? String) ?? (tagValue as? Int) return tag } return nil }
然后我尝试写年份标签,但没有成功:
let comps = NSDateComponents() comps.year = 2010; let yearTag = AVMutableMetadataItem() yearTag.keySpace = AVMetadataKeySpaceID3 yearTag.key = AVMetadataID3MetadataKeyYear yearTag.value = NSCalendar.currentCalendar().dateFromComponents(comps) soundFileMetadata.append(yearTag)
figMetadataCreateConverter signalled err=-12482 (kfigMetadataConverterError_UnsupportedFormat) (Unsupported format conversion) at /SourceCache/CoreMedia/CoreMedia-1562.238/Prototypes/Metadata/Converters/figMetadataConverterCommon.c line 118
请注意,这是在控制台中打印的简单错误,不例外!
将它写为字符串,作为Int甚至是Float,也会导致我出现同样的错误.
轨道/光盘数,轨道/光盘编号标签也是如此.
第一个问题是:如何写出来?
我还有另一个问题.
目前我有一个AVAudioRecorder,我发现无法直接将标签写入录像机的输出文件,因此我提交录像机文件,用AVURLAsset打开它并用AVAssetExportSession重新导出:
self.recorder.stop() let urlAsset = AVURLAsset(URL: srcsoundFileURL) let assetExportSession: AVAssetExportSession! = AVAssetExportSession(asset: urlAsset,presetName: AVAssetExportPresetPassthrough) assetExportSession.outputFileType = AVFileTypeAppleM4A assetExportSession.outputURL = tmpSoundFileURL assetExportSession.Metadata = soundFileMetadata assetExportSession.exportAsynchronouslyWithCompletionHandler({ .... })
第二个问题是:有没有办法避免这种双步行动?
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。