Просмотр атрибутов продолжительности QTMovie?

Я, вероятно, потратил последние 2 недели на поиск в документации Apple Quicktime, чтобы решить, казалось бы, довольно простой вопрос, но безрезультатно. Вот в чем проблема ...

У меня есть несколько коротких файлов QTMovie, каждый из которых содержит три дорожки - обычные две, содержащие звук и видео, плюс дополнительная видеодорожка, содержащая текстовые изображения с субтитрами (всего две видеодорожки). Если я выберу одну из этих дорожек в Quicktime Pro и экспортирую ее как «Последовательность из фильма в изображение», я могу найти, скажем, 142 кадра на протяжении всего фильма. Мой метод поиска также сообщает правильное общее количество кадров.

Теперь я узнал, что вы можете снимать однокадровые изображения, добавлять их в QTMovie и устанавливать их индивидуальное время отображения на экране сколько угодно долго, используя attributeForKey: QTMovieDurationAttribute. Но как мне снова получить доступ к этим данным? (что, по сути, выглядит как обратное этому процессу).

В псевдокоде я пытаюсь сделать что-то вроде:

{
select video track #2 ...
call up the first image in the sequence ...
access and note its on-screen duration setting ...
call up the second image ...
access and note its duration ...
... repeat until done.

}

Я не после редактирования этих данных или чего-то еще - просто выясняю, как я могу получить доступ к отдельным кадрам на видеодорожке ... и где HECK эта информация о времени скрывается внутри недр QT.

Как пенсионер, я думаю, что начинаю становиться слишком стар для такого рода вещей, а Quicktime - это большой, часто сложный и запутанный фреймворк, так что если кто-нибудь может мне помочь советом или (в идеале) всего несколькими строками пример кода здесь, я был бы очень признателен. Заранее спасибо :-)


person Tom    schedule 24.04.2013    source источник


Ответы (1)


Хорошо. После еще нескольких дней копаний и экспериментов я наконец нашел ответ на свой вопрос. Чтобы получить (следующее) изображение субтитров, я использовал:

// access the subtitle track
Track theTrack = [self getVideoSubtitleTrack];

// set flags to find NEXT image (ignoring the current one)...
myFlags = nextTimeStep;
// ... and search forward from current position.
GetTrackNextInterestingTime(theTrack, myFlags, playheadPos, fixed1, &nextInterestingTime, NULL);

Тем не менее, это находит только начало объекта изображения, а итерация по дорожке находит передний край каждого последующего изображения. Но мне также нужно было время окончания текущего текста.

Получив время начала, я поэкспериментировал с семью доступными флагами и обнаружил, что установка флага на «nextTimeTrackEdit» дает время окончания.

person Tom    schedule 27.04.2013