iOS 将 MPMoviePlayerController 镜像到电视并全屏播放电视屏幕

Posted

技术标签:

【中文标题】iOS 将 MPMoviePlayerController 镜像到电视并全屏播放电视屏幕【英文标题】:iOS Mirroring MPMoviePlayerController to TV with TV screen playback in fullscreen 【发布时间】:2015-06-29 06:58:26 【问题描述】:

我有一个使用 MPMoviePlayerController 播放视频(本地存储)的应用

    NSString *deviceDir = [[NSUserDefaults standardUserDefaults] stringForKey:WZLDEVICEPATH];
NSString *videopath = [deviceDir stringByAppendingPathComponent:video]
NSURL *url = [NSURL fileURLWithPath:videopath];
player = [[MPMoviePlayerController alloc] initWithContentURL:url];
CGRect viewInsetRect = CGRectInset (playerframe,
                                            0.0,
                                            0.0 );
        /* Inset the movie frame in the parent view frame. */
[[player view] setFrame:viewInsetRect];
[player view].backgroundColor = [UIColor clearColor];
[player view].tag = TAG_VIDEO_PLAYER;
player.movieSourceType = MPMovieSourceTypeFile;
[player prepareToPlay];
[self.view addSubview: [player view]];

现在我需要将应用程序镜像到外部设备,镜像在第二个屏幕(电视)上正常工作,但电视播放的分辨率(宽 x 高)与 iPad 中的相同,我必须使电视全屏播放。有什么办法可以在不同分辨率的两台设备上同步播放。

我已尝试使用 MPMoviePlayerController 不同实例的多个窗口,但同步播放受到影响。有什么办法可以解决这些问题吗?

【问题讨论】:

【参考方案1】:
[secondScreen  setOverscanCompensation: UIScreenOverscanCompensationInsetApplicationFrame];

通过上述设置,16:9 分辨率的视频通过填充整个屏幕和 4:3 视频开始播放,顶部和底部有黑条,这没关系,因为我们知道要保持它需要的宽高比。

注意,我还注意到,当我们使用 iPad Mini 时,旧行为仍然会继续出现。

【讨论】:

以上是关于iOS 将 MPMoviePlayerController 镜像到电视并全屏播放电视屏幕的主要内容,如果未能解决你的问题,请参考以下文章

发布 iOS 应用后,是不是可以将部署目标从 iOS8 更改为 iOS7?

将 io.StringIO 转换为 io.BytesIO

将应用程序从 iOS 6 转换为 iOS 7 [关闭]

将 io.BytesIO 转换为 io.StringIO 以解析 HTML 页面

如何将 io.Reader 变成 io.ReadCloser? [复制]

iOS 8:为啥 NSLayoutAttributeCenterX 无法将我的视图居中? (适用于 iOS 7)