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]];