首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正在为iOS中的AVAsset检索AVMetadataItem上的密钥名称

正在为iOS中的AVAsset检索AVMetadataItem上的密钥名称
EN

Stack Overflow用户
提问于 2011-02-21 16:03:03
回答 1查看 4.8K关注 0票数 8

我正在尝试识别iPad上的视频中的不同元数据项。到目前为止,我已经成功地使用AVAsset库找到了该文件,并使用metadataForFormat:生成了一个AVMetadataItems数组。在文件中仅找到iTunes和Quicktime用户数据格式。问题是,现在我有了这些信息,我无法识别什么是什么。我打算用元数据键索引的信息加载一个字典,但是使用AVMetadataItem的key属性似乎不能正常工作,就好像返回一个数字(调试器说它是一个NSCFNumber)。下面是我正在做的一些示例代码:

代码语言:javascript
复制
ALAssetRepresentation *representation = [[valAsset defaultRepresentation] retain];
NSURL *url = [representation url];
AVURLAsset *aAsset = [[AVURLAsset URLAssetWithURL:url options:nil] retain];
metaDataDict = [[NSMutableDictionary dictionary] retain];
NSArray *fmtmetadata = [aAsset metadataForFormat:@"com.apple.itunes"];
for (AVMetadataItem* meta in fmtmetadata)
{
    [metaDataDict setObject:[meta stringValue]
             forKey:[meta key]];
    NSLog(@"metadata: key = %@", [meta key]);
}

这将在调试器控制台中产生以下输出:

代码语言:javascript
复制
metadata: key = -1452383891
metadata: key = -1452841618
metadata: key = 1684370275
metadata: key = 1818518899
metadata: key = 1937009003
metadata: key = -1453101708

顺便说一下,将NSLog行改为:

代码语言:javascript
复制
NSLog(@"metadata: %@", meta);

为我们提供如下输出:

代码语言:javascript
复制
metadata: keySpace=itsk, key=desc, commonKey=(null), locale=(null), value=This is the Description of the Video, time={INVALID}, duration={INVALID}, extras={
    dataType = 1;
}

任何帮助都是非常感谢的!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-02-22 03:24:44

看起来这些键是编码的ID3标记:

1684370275 = 0x64657363 = {'d','e','s','c'}

1818518899 = 0x6C646573 = {'l','d','e','s'}

1937009003 = 0x7374696B = {'s','t','i','k'}

等。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5063581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档