gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 18:03:26 26 4
gpt4 key购买 nike

我正在尝试将一些 XMP 元数据附加到我正在使用 AVAssetExportSession 导出的 QuickTime 视频中。 .
AVFoundation 确实支持写入元数据(AVMetadataItem),并且我已经成功导出简单的值,随后可以使用 exiftool 进行检查。 :

AVMutableMetadataItem *item = [AVMutableMetadataItem metadataItem];
item.identifier = [AVMetadataItem identifierForKey:AVMetadataCommonKeyTitle keySpace:AVMetadataKeySpaceCommon];
item.value = @"My Title";

exportSession.metadata = @[item];
但我无法配置我的 AVMetadataItem的正确编码 XMP。根据 Adobe XMP spec , QuickTime 视频中的 XMP 应在 moov 下/ udta/ XMP_ atom,但我看不到使用 AVFoundation API 或与这部分元数据相对应的任何键空间来制作分层元数据的方法。
我还需要将 XMP 元数据写入图像,并且图像 I/O 确实对此有直接支持 ( CGImageMetadataCreateFromXMPData),但我在 AVFoundation 中找不到任何等效的东西。
如果无法使用 AVFoundation(或类似的),我可能会考虑集成 XMP-Toolkit-SDK但是当 AVFoundation 几乎可以满足我的需要时,这感觉就像一个笨拙的解决方案。

最佳答案

在尝试了许多不同的键/键空间和 AVMetadataItem 的其他属性后,我终于设法解决了这个问题。 :

  • 使用自定义 XMP_键入AVMetadataKeySpaceQuickTimeUserData键位
  • 将值设置为不是 NSString但作为 NSData包含有效负载的 UTF-8 数据
  • 设置dataType原始数据

  • 这导致 exiftool 可以按预期读取 XMP 属性。
    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];

    关于ios - 如何在 iOS 上将 XMP 元数据写入 QuickTime 视频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63837825/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com