3

全部:

我正在使用 AVCaptureMovieFileOutput 录制电影。随着各种事件的发生,我希望将事件的标题/时间存储在正在编写的 QuickTime 电影中。因此,我可能有 20-30 个数据点希望与特定电影相关联。

我的策略是使用元数据,但我运气不佳。有人可以告诉我,首先:

a) 我可以存储任意元数据,还是只存储 AVMetadataFormat.h 中定义的那些键和值?我希望能够存储一个数组。

b)如果我可以存储任意数组,那么诀窍是什么?如果没有,我可以将我的元数据存储在评论字段中吗(丑陋,但我可以足够快地解析 20-30 点)。

c) 下面显示的代码似乎不起作用,因为无论我为 item.key 输入什么(AVMetadataQuickTimeMetadataKeyArtist、AVMetadataCommonKeyArtist 或其他各种以 Artist 结尾的东西),我在 iTune 的“获取信息”窗口中都看不到任何内容。

    - (IBAction)recordEvent:(id)sender {

NSLog(@"Record a metadata point here ...");

// is there any metadata associated with the file yet?
NSArray * existingMetaData = self.aMovieFileOutput.metadata;
NSMutableArray * newMetadataArray = nil;
if(existingMetaData){
    newMetadataArray = [existingMetaData mutableCopy];
} else {
    newMetadataArray = [[NSMutableArray alloc]init];
}

AVMutableMetadataItem * item = [[AVMutableMetadataItem alloc]init];

item.keySpace = AVMetadataKeySpaceCommon;
item.key = AVMetadataQuickTimeMetadataKeyArtist;

item.value = @"Enya, really!"; // in practice this will be the title of (UIButton *)sender

item.time = CMTimeMake(0.0,1.0);

[newMetadataArray addObject:item];
self.aMovieFileOutput.metadata = newMetadataArray;

}

任何建议将不胜感激。

谢谢!

4

1 回答 1

1

AVCaptureMovieFileOutput通过&将元数据存储在 QuickTime 文件中AVMutableDataItems仅允许您存储键空间中预定义的键的值AVMetadataKeySpaceCommon,即 AVMetadataCommonKey* 类似键

所有其他数据都被忽略

于 2012-03-29T15:32:39.360 回答