Quicktime元数据API和iTunes
我试图用quicktime元数据API在.mov文件中设置一些元数据,并将它显示在iTunes中。我已经为大多数属性工作,但我无法获取描述字段来填充。这里是我正在使用的代码(缩短只显示我认为是相关部分)。Quicktime元数据API和iTunes
const char* cString = ([@"HELLO WORLD" cStringUsingEncoding:NSMacOSRomanStringEncoding]);
QTMovie* qtMovie = [[QTMovie alloc] initWithFile:filename error:&error];
Movie movie = [qtMovie quickTimeMovie];
QTMetaDataRef metaDataRef = NULL;
OSStatus err = noErr;
err = QTCopyMovieMetaData(movie, &metaDataRef);
QTMetaDataItem outItem;
QTMetaDataAddItem(metaDataRef,
kQTMetaDataStorageFormatiTunes,
kQTMetaDataKeyFormatCommon,
(const UInt8 *)&key,
sizeof(key),
(const UInt8 *)cString,
strlen(cString),
kQTMetaDataTypeUTF8,
&outItem);
我发现下面的链接,指出了信息和说明性质的,我应该使用kQTMetaDataStorageFormatQuicktime,但是这似乎并没有任何区别。在将元数据导入iTunes视频时,是否有其他人获得了填充说明列的任何成功?
http://lists.apple.com/archives/quicktime-api/2006/May/msg00115.html
终于在这篇文章的帮助下找到了它,并对我的标记媒体的内容进行了深入调试。
Retrieving the key name on AVMetadataItem for an AVAsset in iOS
我设置的数据格式kQTMetaDataStorageFormatiTunes和密钥格式kQTMetaDataKeyFormatiTunesShortForm。然后我使用的标签是编码的id3标签,就像上面的帖子中一样。如果您的目标是在iTunes中查看数据,则通用密钥(kQTMetaDataCommonKeyArtist,kQTMetaDataCommonKeyComment)通常不起作用。看起来他们中的一些人仍然在工作,但总的来说,他们没有正确地将其映射到他们的id3对应方。
我结束了使用AtomicParsley http://atomicparsley.sourceforge.net/没有这些优点还在于它支持MP4和M4V文件,而不只是MOV文件,这也是我的东西所需要的利益的任何问题。这样的描述显示很好。它比QTMetaData API更容易使用。
编辑:呃..刚发现这个应用程序不适用于mov文件。这将适用于mp4和m4v文件,但我想原来的问题仍然存在,因为我想支持mov文件。