我正在尝试使用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
答案 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对应物。