Я хочу экспортировать каждый кадр в * .mov-Movie-файл, так что я это сделать:GetNextInterestingTime() получает один и тот же кадр несколько раз
GoToBeginningOfMovie(movie);
TimeValue startPoint = 0;
long gnitFrames = 0;
while (startPoint >= 0) {
GetMovieNextInterestingTime(movie, nextTimeStep, 0, &whichMediaType, startPoint, 0, &startPoint, NULL);
gnitFrames++;
}
проблема, подсчет gnitFrames
отличается (намного больше), чем когда я называю это:
Track track = GetMovieIndTrack(movie, 1);
Media media = GetTrackMedia(track);
OSType mediatype;
MediaHandler mediahandler = GetMediaHandler(media);
GetMediaHandlerDescription(media, &mediatype, nil, nil);
MediaGetName(mediahandler, medianame, 0, nil);
long nsamples = GetMediaSampleCount(media);
nsamples
дает мне правильный кадр подсчета. Итак, теперь мой вопрос: как я могу это сделать, чтобы попасть в каждый кадр в фильме только один раз? (Когда я экспортирую рамку сейчас после того, как я позвонил GetNextInterestingTime
, кадр экспортируется несколько раз, иногда даже 25 раз)
Моя операционная система - Windows XP.
это не работает для меня, потому что я работаю с MPEG много, и когда я использую это для подсчета кадров, например, кажется, что это вызывает бесконечный цикл ... :( – Berschi
Есть вы пытались передать 'nextTimeStep' вместо' nextTimeMediaSample | nextTimeEdgeOK', все еще используя 'GetMediaNextInterestingDisplayTime()'? Таким образом, вы можете быть в состоянии удостовериться в том, что MPEG допускает, чтобы несколько кадров содержались в одном образце носителя, будучи возможность игнорировать время, связанное с Medias, вас не интересует ... – Bjoern