Почему MPMoviePlayerController setCurrentPlaybackTime идет не в то время?
Я испытываю некоторую странность с MPMoviePlayerController.
Я пытаюсь установить currentPlaybackTime видео во время воспроизведения (источник файла).
Вот пример того, что происходит
- Воспроизвести видео
- нажмите кнопку, чтобы перейти к 9.3 секундам в видео
- Состояние воспроизведения изменяется следующим образом:
a) Состояние воспроизведения = 5 (MPMoviePlaybackStateSeekingBackward). currentPlaybackTime = 15.74 (это время, когда я нажал кнопку)
b) Состояние воспроизведения = 1 (MPMoviePlaybackStatePlaying). currentPlaybackTime = 7.32
Кажется, не имеет значения, что я пытаюсь установить currentPlaybackTime и заканчивается как 7.32.
Дополнительная информация:
Я получаю это поведение даже с помощью встроенных элементов управления на MPMoviePlayerController. например Если я прокручу его вперед до 15 секунд, он вернется к 7.32
Любые идеи? Это как-то связано с медиа файлом?
Ответы
Ответ 1
Вам следует искать с помощью seekToTime или seekToTimeWithSeconds.
CMTime npt = CMTimeMake(9,1);
[self.player seekToTime:npt];
или
CMTime npt = CMTimeMakeWithSeconds(9.3, 600);
[self.player seekToTime:npt toleranceBefore:kCMTimeZero toleranceAfter:kCMTimeZero];
Ответ 2
Это поздний ответ, но я нашел решение моей проблемы, которое было похоже.
Вы можете изменить воспроизведение следующим образом:
#define START_TIME 50.0f
#define END_TIME START_TIME + 20.0f //play for 20 seconds
MPMoviePlayerController *player = [self moviePlayerController];
[player stop];
[player setInitialPlaybackTime:START_TIME];
[player setEndPlaybackTime:END_TIME];
[player play];
Ответ 3
cdasher указал мне в правильном направлении, но это то, что вы должны сделать:
Ищите с использованием метода seekToTime: toleranceBefore: toleranceAfter для выборочного точного поиска. Для этого вы должны использовать AVPlayer, а не MPMediaPlayerController
CMTime npt = CMTimeMakeWithSeconds(9.3, 600);
[self.player seekToTime:npt toleranceBefore:kCMTimeZero toleranceAfter:kCMTimeZero];