проблема с поиском вперед / назад с использованием MPMoviePlayerController в iOS4

#ios #ios4 #mpmovieplayercontroller #uislider #nsnotification

#iOS #ios4 #mpmovieplayercontroller #пользовательский интерфейс #nsnotification

Вопрос:

У меня странная проблема с MPMoviePlayerController в iOS.

У меня есть MPMoviePlayerController со стилем управления none. Добавлен мой собственный пользовательский интерфейс для поиска вперед / назад в фильме.

Настройте уведомления, чтобы видеть изменения в состоянии воспроизведения.

После установки player.currentPlaybackTime в новое значение состояние воспроизведения переходит в MPMoviePlaybackStateSeekingForward или MPMoviePlaybackStateSeekingBackward и остается в этом состоянии.

Я ожидал бы, что когда поиск прекратится (найдена новая позиция), и проигрыватель продолжит воспроизведение в обычном режиме, состояние воспроизведения вернется к MPMoviePlaybachStatePlaying, но это не так.

Это нормальное поведение или я что-то упускаю?

Комментарии:

1. Это ненормальное поведение. Вы используете удаленный поток или воспроизводите локальный ресурс? При воспроизведении того же контента с использованием стандартного проигрывателя (например, через веб-сайт) все ли работает так, как ожидалось?

2. не имеет значения, использую ли я локальный ресурс или удаленный поток. В обоих случаях я получаю состояние воспроизведения 4 или 5 (поиск вперед / назад). Я бы ожидал, что уведомление MPMoviePlayerPlaybackStateDidChangeNotification с возвратом playbackstate к 1 (воспроизведение).

3. Вы пробовали разные файлы содержимого? Я бы предложил попробовать это на примере BipBop: devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8

4. Уже пробовал несколько разных файлов. Но я попробую.

5. @Пока я действительно не застрял на этом. Я собрал несколько примеров кода , которые воспроизводят эту проблему. Пример кода воспроизводит случайную песню с iPod. Смотрите информацию об отладке для состояния воспроизведения. Спасибо.

Ответ №1:

Проблема заключается в непрерывности свойства UISlider. Установите значение нет, и вы будете уведомлены, когда состояние изменится с прямого / обратного на воспроизведение.

self.playerControlsView.slider.continuous = НЕТ;

Я думаю, проблема в том, что когда для свойства continuous установлено значение YES. Ползунок продолжит действие по перемещению, которое предоставляет пользователь, и не вызовет изменение состояния. И, следовательно, состояние остается прямым / обратным. Я не очень уверен в этом, но ответ находится где-то в этих строках.

Надеюсь, это кому-то поможет 🙂