Quicktime元数据API和iTunes

时间:2011-09-21 07:27:08

标签: quicktime

我正在尝试使用quicktime元数据API在.mov文件中设置一些元数据,并将其显示在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

2 个答案:

答案 0 :(得分:1)

我最终使用AtomicParsley http://atomicparsley.sourceforge.net/没有任何问题,这也有它支持mp4和m4v文件的好处,而不仅仅是我需要的mov文件。随着描述显示良好。它比QTMetaData api更容易使用。

编辑: Argh ..刚刚发现此应用无法与mov文件一起使用。这将适用于mp4和m4v文件,但我想最初的问题仍然存在,因为我也想支持mov文件。

答案 1 :(得分:0)

最后借助这篇文章以及对我标记媒体内容的深入调试来计算出来。

Retrieving the key name on AVMetadataItem for an AVAsset in iOS

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