首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在QuickTime上将XMP元数据写入iOS视频?

如何在QuickTime上将XMP元数据写入iOS视频?
EN

Stack Overflow用户
提问于 2020-09-10 21:18:32
回答 1查看 267关注 0票数 1

我试图将一些XMP元数据附加到我使用QuickTime导出的AVAssetExportSession视频中。

AVFoundation确实支持编写元数据(AVMetadataItem),并且我成功地导出了简单的值,这些值随后可以使用出口工具进行检查

代码语言:javascript
复制
AVMutableMetadataItem *item = [AVMutableMetadataItem metadataItem];
item.identifier = [AVMetadataItem identifierForKey:AVMetadataCommonKeyTitle keySpace:AVMetadataKeySpaceCommon];
item.value = @"My Title";

exportSession.metadata = @[item];

但我很难将我的AVMetadataItem配置为正确编码XMP。根据Adobe规范,QuickTime视频中的XMP应该位于moov / udta / XMP_原子之下,但我无法找到使用AVFoundation API或任何对应于元数据这一部分的键空间来生成分层元数据的方法。

我还需要将XMP元数据写入图像,而Image /O确实对此有直接支持(CGImageMetadataCreateFromXMPData),但在AVFoundation中找不到任何类似的东西。

如果不可能使用AVFoundation (或类似的),我可能会考虑集成XMP-Toolkit-SDK,但当AVFoundation似乎能够满足我的需要时,这感觉就像一个笨重的解决方案。

EN

回答 1

Stack Overflow用户

发布于 2020-09-14 12:56:38

在尝试了许多键/密钥空间和AVMetadataItem的其他属性之后,我终于想出了这一点。

  • XMP_键空间中使用自定义AVMetadataKeySpaceQuickTimeUserData
  • 不要将值设置为NSString,而是将其设置为包含有效载荷的UTF-8数据的NSData
  • dataType设置为原始数据

这将导致XMP属性,这些属性可以按预期由exiftool读取。

代码语言:javascript
复制
NSString *payload =
  @"<x:xmpmeta xmlns:x=\"adobe:ns:meta/\" x:xmptk=\"MyAppXMPLibrary\">"
    "<rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">"
      "<rdf:Description rdf:about=\"\" xmlns:xmp=\"http://ns.adobe.com/xap/1.0/\">"
        "<xmp:CreatorTool>My App</xmp:CreatorTool>"
      "</rdf:Description>"
    "</rdf:RDF>"
  "</x:xmpmeta>";

NSData *data = [payload dataUsingEncoding:kCFStringEncodingUTF8];

AVMutableMetadataItem *item = [AVMutableMetadataItem metadataItem];
item.identifier = [AVMetadataItem identifierForKey:@"XMP_"
                                          keySpace:AVMetadataKeySpaceQuickTimeUserData];
item.dataType = (NSString *)kCMMetadataBaseDataType_RawData;
item.value = data;

exportSession.metadata = @[item];
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63837825

复制
相关文章

相似问题

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