如何在iPad上使用控件在外部显示器上输出视频?
-
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];
当前使用第二个实现,增加了self.view和external_window,它将在外部显示器(带有控件)上显示视频,而iPad屏幕似乎没有发生任何事情,除了当电影控制淡出淡出时,状态栏消失了。我还尝试过将MoviePlayer.view添加到Self.View中,并且它将闪烁某些内容,以使“在电视上显示内容”消息的效果,然后继续在iPad上播放电影。目前,该视频是通过按下按钮启动的。使用模拟器和电视输出选项,因为它更容易调试。 Xcode版本3.2.5和实际设备上的最新版本的iOS。如何修复?它应该像iPad上的YouTube应用一样行为。
解决方案
这样做的简单方法是使用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]];
}
不隶属于 StackOverflow