gpt4 book ai didi

ios - 设置和检索 AVMetadataCommonKeyCreator 值的问题

转载 作者:技术小花猫 更新时间:2023-10-29 11:25:35 27 4
gpt4 key购买 nike

我有一个用于 iPhone 的视频录制应用程序。我正在使用 AVAssetWriter 将录制的视频数据写入文件。我也对将自定义元数据嵌入文件感兴趣。例如:我想将我的应用程序标识为视频的创建者。

因此,在创建 Assets 编写器之后,我使用 key AVMetadataCommonKeyCreator 将创建者值添加到 Assets 编写器的元数据中。

代码片段如下:

AVAssetWriter *assetWrtr = [[AVAssetWriter alloc] initWithURL:inURL fileType:AVFileTypeQuickTimeMovie error:&error];
self.assetWriter = assetWrtr;
[assetWrtr release];

NSArray *existingMetadataArray = self.assetWriter.metadata;
NSMutableArray *newMetadataArray = nil;
if (existingMetadataArray)
{
newMetadataArray = [existingMetadataArray mutableCopy]; // To prevent overriding of existing metadata
}
else
{
newMetadataArray = [[NSMutableArray alloc] init];
}

AVMutableMetadataItem *item = [[AVMutableMetadataItem alloc] init];
item.keySpace = AVMetadataKeySpaceCommon;
item.key = AVMetadataCommonKeyCreator;
item.value = @"My App";

[newMetadataArray addObject:item];
self.assetWriter.metadata = newMetadataArray;
[newMetadataArray release];
[item release];

录制完成后,我将尝试使用 AVURLAsset 读取文件的内容。

NSURL *outputFileURL = [self.assetWriter outputURL];
AVURLAsset *asset = [AVURLAsset URLAssetWithURL:outputFileURL options:nil];
NSArray *keys = [NSArray arrayWithObject:@"commonMetadata"];

[asset loadValuesAsynchronouslyForKeys:keys completionHandler:^(void) {

NSError *error = nil;
AVKeyValueStatus durationStatus = [asset statusOfValueForKey:@"commonMetadata" error:&error];
switch (durationStatus) {
case AVKeyValueStatusLoaded:
NSLog(@"AVKeyValueStatusLoaded");
NSLog(@"commonMetadata:%@", [asset commonMetadata]);
break;
case AVKeyValueStatusFailed:
NSLog(@"AVKeyValueStatusFailed");
break;
case AVKeyValueStatusCancelled:
NSLog(@"AVKeyValueStatusCancelled");
break;
}
}];

但是 [asset commonMetadata] 不返回任何 AVMetadataItems。它返回一个空数组。我能够设置其他元数据对象的值,例如 AVMetadataCommonKeyTitleAVMetadataCommonKeyModelAVMetadataCommonKeySource。这些值被正确检索。问题仅在于 AVMetadataCommonKeyCreator。请让我知道这种行为的原因。是否无法为 AVMetadataCommonKeyCreator 设置应用特定值?这个键实际上代表什么?

最佳答案

大约一年前我遇到了同样的问题。当我使用 AVFoundation 编写音频文件时,我没有看到任何元数据。我认为 AVMetadataCommonKeyCreator 不起作用。我现在不能说,但确实如此。

我通过使用 C 库 taglib http://taglib.github.com 解决了这个问题为 iOS 构建这个库真的很容易。我觉得编译不了可以删掉一些文件。

关于ios - 设置和检索 AVMetadataCommonKeyCreator 值的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5777609/

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