所有
我正在使用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;
}
非常感谢任何建议。
谢谢!
答案 0 :(得分:1)
通过AVCaptureMovieFileOutput
&存储QuickTime文件中的元数据AVMutableDataItems
仅允许您存储AVMetadataKeySpaceCommon
密钥空间中预定义的密钥的值,即。即AVMetadataCommonKey *类似于键
所有其他数据都忽略了