Почему MPMoviePlayerController setCurrentPlaybackTime идет в неправильное время? - PullRequest
13 голосов
/ 09 сентября 2011

Я испытываю некоторые странности с MPMoviePlayerController.

Я пытаюсь установить currentPlaybackTime видео во время его воспроизведения (источник файла).Вот пример того, что происходит

  1. Воспроизведение видео
  2. Нажатие кнопки для перехода на 9,3 секунды в видео
  3. Состояние воспроизведения изменяется следующим образом:

a) Состояние воспроизведения = 5 (MPMoviePlaybackStateSeekingBackward).currentPlaybackTime = 15.74 (это время, которое я получил, когда нажал кнопку)

b) Состояние воспроизведения = 1 (MPMoviePlaybackStatePlaying).currentPlaybackTime = 7.32

Кажется, что не имеет значения, что я пытаюсь установить для currentPlaybackTime, оно заканчивается как 7.32.

Дополнительная информация: я получаю это поведение, даже используя встроенные элементы управления наMPMoviePlayerController.Например, если я прокручиваю его вперед на 15 секунд, он возвращается к 7.32

Есть идеи?Это как-то связано с медиафайлом?

Ответы [ 4 ]

6 голосов
/ 10 сентября 2011

Вы должны искать, используя 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];
3 голосов
/ 05 октября 2011

Это поздний ответ, но я нашел решение моей проблемы, которое было похоже.Вы можете изменить воспроизведение следующим образом:

#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];
1 голос
/ 09 июня 2018

Я хочу поделиться своим опытом использования MPMoviePlayerController mediaPlayer для воспроизведения MP3.

[mediaPlayer setCurrentPlaybackTime: currentPlayBackTime];// это не работает для файла MP3.Это работает только для видео.

я использовал для MP3, и это работает для IOS 11 и более поздних версий.

[mediaPlayer setInitialPlaybackTime: currentPlayBackTime];// воспроизведение файла MP3 с последней позиции

1 голос
/ 14 сентября 2011

cdasher указал мне правильное направление, но это то, что вы должны сделать:

Ищите, используя seekToTime: толерантностьBefore: толерантностьAfter для точной выборки.Для этого вы должны использовать AVPlayer, а не MPMediaPlayerController

CMTime npt = CMTimeMakeWithSeconds(9.3, 600);
[self.player seekToTime:npt toleranceBefore:kCMTimeZero toleranceAfter:kCMTimeZero];
...