Как получить координаты реального видео, воспроизводимого внутри MPMoviePlayerController? - PullRequest
3 голосов
/ 23 января 2012

У меня MPMoviePlayerController, воспроизводящий видео.

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

Могу ли я узнать, в каком прямоугольнике находится настоящее видео? Тогда я мог бы узнать координаты касания относительно видео.

1 Ответ

5 голосов
/ 24 января 2012

Чтобы получить правильные размеры / соотношение сторон содержимого фильма, вы можете использовать свойство MPMoviePlayerController naturalSize.


Из справочника по классам MPMoviePlayerController

naturalSize

Ширина и высота кадра фильма. (Только для чтения)

@property (nonatomic, readonly) CGSize naturalSize

Обсуждение

Это свойство сообщает о чистой апертуре видео в квадратные пиксели. Таким образом, указанные размеры учитывают анаморфное содержание и режимы апертуры.

Возможно изменение естественного размера фильма во время воспроизведение. Обычно это происходит, когда скорость потоковой передачи содержимое меняется или когда воспроизведение переключается между только аудио и сочетание аудио и видео.

Доступность Доступный в iOS 3.2 и позже. Объявлен в MPMoviePlayerController.h


Теперь давайте предположим, что вы проигрываете фильм, который возвращает 280x150 для его естественного размера. Это приводит к соотношению сторон примерно 1.87 (ширина делится на высоту). Теперь предположим, что у вас разрешение экрана 768x1024 (iPad, портрет). Если вы хотите, чтобы этот фильм отображался максимально полно, но при этом некоторые элементы управления оставались видимыми, вы бы использовали следующие вычисления для фактической MPMoviePlayerController.view высоты:

768 / 1.87 = 411 (округлено)

Полученный кадр:

MPMoviePlayerController.view.frame = CGRectMake(0.0f, 
                                                (1024.0f - 411.0f) / 2.0f, 
                                                768.0f, 
                                                411.0f);
...