2011-09-21 72 views
0

我试图用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

回答

0

终于在这篇文章的帮助下找到了它,并对我的标记媒体的内容进行了深入调试。

Retrieving the key name on AVMetadataItem for an AVAsset in iOS

我设置的数据格式kQTMetaDataStorageFormatiTunes和密钥格式kQTMetaDataKeyFormatiTunesShortForm。然后我使用的标签是编码的id3标签,就像上面的帖子中一样。如果您的目标是在iTunes中查看数据,则通用密钥(kQTMetaDataCommonKeyArtist,kQTMetaDataCommonKeyComment)通常不起作用。看起来他们中的一些人仍然在工作,但总的来说,他们没有正确地将其映射到他们的id3对应方。

1

我结束了使用AtomicParsley http://atomicparsley.sourceforge.net/没有这些优点还在于它支持MP4和M4V文件,而不只是MOV文件,这也是我的东西所需要的利益的任何问题。这样的描述显示很好。它比QTMetaData API更容易使用。

编辑:呃..刚发现这个应用程序不适用于mov文件。这将适用于mp4和m4v文件,但我想原来的问题仍然存在,因为我想支持mov文件。