Как выводить видео на внешнем дисплее с элементами управления на iPad?

StackOverflow https://stackoverflow.com/questions/4621293

  •  30-09-2019
  •  | 
  •  

Вопрос

В настоящее время при выводе видео на внешний дисплей из iPad он перемещает элементы управления и все на внешний дисплей. Это не полезно, потому что вы не можете контролировать фильм, пока элементы управления на внешнем дисплее. Вот некоторые фрагменты кода из нашего приложения.

Это код настройки экрана: (метод называется setupexternalscreen)

if ([[UIScreen screens] count] > 1) {
    external_disp = [[UIScreen screens] objectAtIndex:1];
    [external_disp setCurrentMode:[[external_disp availableModes] objectAtIndex:0]];
    self.external_window = [[UIWindow alloc] init];
    external_window.screen = external_disp;
    [external_window makeKeyAndVisible];
}

Это создание MPMoviePlayerviewController:

[self setupExternalScreen]; //Calls the code above
MPMoviePlayerViewController *mpv = [[MPMoviePlayerViewController alloc] initWithContentURL:url];
[self presentMoviePlayerViewControllerAnimated:mpv];

У меня также есть MPMOViePlayerController и также попробовал это:

self.moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:url];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playerDidFinish:) name:MPMoviePlayerDidExitFullscreenNotification object:[self moviePlayer]];
[self.view addSubview:moviePlayer.view];

if (!external_window) {
    [self setupExternalScreen];
}
if (external_window) {
    [external_window addSubview:moviePlayer.view];
} 
[moviePlayer setControlStyle:MPMovieControlStyleDefault];

[moviePlayer setFullscreen:YES];// animated:NO];

if (![moviePlayer isPreparedToPlay]) [moviePlayer prepareToPlay];
[moviePlayer play];

В настоящее время с 2-м внедрением, добавлением как к Self.View, так и External_window, он покажет видео на внешнем дисплее (с элементами управления), и экран iPad выглядит как ничего, не происходит, кроме полосы состояния, исчезая, когда фильм управления выцветает Отказ Я также пытался добавить MOVELPLAYER.View, чтобы просто Self.View, и он будет мерцать что-то влиять на эффект сообщения «Показ содержимого в телевизоре», прежде чем он затем продолжается воспроизводить фильм на iPad. В настоящее время видео запускается нажатием кнопки. Используя симулятор и вариант TV OUT, так как легче отладить. XCODE версия 3.2.5 и последняя версия iOS на фактическом устройстве. Как это может быть исправлено? Он должен вести себя как приложение YouTube на iPad.

Это было полезно?

Решение

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

Вот какой-то выборкий код:

- (void)embedInternalVideo:(CGRect)frame {
    NSBundle *bundle = [NSBundle mainBundle];
    NSString* html = @"<video src=\"sample_iPod.m4v\" width=640 height-480 controls autoplay></video>";
    if (videoView == nil) {  
        videoView = [[UIWebView alloc] initWithFrame:frame];  
        [self.view addSubview:videoView];  
    }  
    [videoView loadHTMLString:html baseURL:[bundle resourceURL]];      
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top