Macos Quicktime:set';elng&x27;atom或AVAssetTrack';s extendedLanguageTag属性
我有一些视频,我需要为每个曲目设置一个扩展语言标签。我还没有找到任何这样做的应用程序,所以我尝试用代码来实现它Macos Quicktime:set';elng&x27;atom或AVAssetTrack';s extendedLanguageTag属性,macos,quicktime,macos-carbon,qtkit,Macos,Quicktime,Macos Carbon,Qtkit,我有一些视频,我需要为每个曲目设置一个扩展语言标签。我还没有找到任何这样做的应用程序,所以我尝试用代码来实现它 elng标签的文档如下所示 我试图读取该标记的位置是在iOS上,其中extendedLanguageTag是AVAssetTrack的只读属性。基本上,我想在QuickTime文件中的轨迹上设置一些可以使用该属性检索的内容 我不在乎使用哪个QuickTime API——在这次尝试中,我使用QTKit打开视频,然后使用旧的C QuickTime API尝试设置标记。然而,它不起作用。(没
elng
标签的文档如下所示
我试图读取该标记的位置是在iOS上,其中extendedLanguageTag
是AVAssetTrack的只读属性。基本上,我想在QuickTime文件中的轨迹上设置一些可以使用该属性检索的内容
我不在乎使用哪个QuickTime API——在这次尝试中,我使用QTKit打开视频,然后使用旧的C QuickTime API尝试设置标记。然而,它不起作用。(没有返回错误代码,只是没有设置标记。)
实际上,我以前从未使用过QuickTime C API,所以我可能完全误解了某些东西。有人能帮忙吗
NSError *error = nil;
QTMovie *mov = [QTMovie movieWithFile:filename error:&error];
NSArray *tracks = mov.tracks;
int i=0;
for (QTTrack *track in tracks)
{
OSErr err;
Track qtrack = track.quickTimeTrack;
Media media = GetTrackMedia(qtrack);
QTAtomContainer props;
err = GetMediaPropertyAtom(media, &props);
if (props == NULL)
{
err = QTNewAtomContainer(&props);
}
char nt[5]= "en-gb" ;
QTAtom newAtom;
err = QTInsertChild(props, kParentAtomIsContainer, 'elng', 1, 0, 5, &nt, &newAtom);
if (newAtom == NULL)
{
NSLog(@"Insert child failed");
}
SetMediaPropertyAtom(media, props);
}
[mov writeToFile:@"/Users/amy/Downloads/testfilmAgain43.mov" withAttributes:[NSDictionary dictionaryWithObject:[NSNumber numberWithBool:YES] forKey:QTMovieFlatten]];