iPhone 용 비디오 녹화 앱이 있습니다. 녹화 된 비디오 데이터를 파일에 쓸 때 AVAssetWriter
을 사용하고 있습니다. 또한 사용자 지정 메타 데이터를 파일에 포함시키는 데 관심이 있습니다. 예를 들면 : 비디오 제작자로 내 응용 프로그램을 식별하고 싶습니다.AVMetadataCommonKeyCreator 값을 설정하고 검색하는 데 문제가 발생했습니다.
따라서 자산 작성자를 만든 후 자산 작성자의 메타 데이터에 AVMetadataCommonKeyCreator
키를 사용하여 생성자 값을 추가합니다. 다음과 같이
코드는 다음과 같습니다 녹음이 완료
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
를 반환하지 않습니다. 빈 배열을 반환합니다. AVMetadataCommonKeyTitle
, AVMetadataCommonKeyModel
, AVMetadataCommonKeySource
과 같은 다른 메타 데이터 개체의 값을 설정할 수 있습니다. 이 값은 올바르게 검색됩니다. 문제는 AVMetadataCommonKeyCreator
입니다. 이 문제의 원인을 알려주십시오. AVMetadataCommonKeyCreator
에 앱 특정 값을 설정할 수 있습니까? 이 열쇠는 실제로 무엇을 나타 냅니까?
는 AVMetadataCommonKeyCreator는 저장되지 않습니다. Apple에보고 할 시간. – Dado
iOS 8.1에서 'AVAssetWriter'로 파일 형식에 저장할 메타 데이터를 가져올 수 없습니다. @Dado가 귀하의 보고서에서 얻은 것이 있습니까? – OrangeDog