У меня есть несколько видео, для которых мне нужно установить расширенный языковой тег для каждого из треков.Я не нашел ни одного приложения, которое делает это, поэтому я пытаюсь сделать это в коде.
Документация для тега elng
здесь .
Место, где я пытаюсь прочитать этот тег, находится на iOS, где extendedLanguageTag
- это свойство только для чтения AVAssetTrack.По сути, я хочу установить на дорожку что-то в моем файле QuickTime, которое можно получить с помощью этого свойства.
Мне все равно, какой QuickTime API я использую - в этой попытке я использую QTKit, чтобы открытьвидео, а затем с помощью старого API C QuickTime, чтобы попытаться установить тег.Тем не менее, это не работает.(Коды ошибок не возвращаются, тег просто не устанавливается.)
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]];
На самом деле я никогда раньше не использовал QuickTime C API, так что я могу что-то неправильно понять.Кто-нибудь может помочь?