MPMoviePlayerController 在影片结尾更改控件样式

Posted

技术标签:

【中文标题】MPMoviePlayerController 在影片结尾更改控件样式【英文标题】:MPMoviePlayerController changes control style at the end of movie 【发布时间】:2011-06-15 05:54:22 【问题描述】:

在 iPad 上使用 ios4(.3)

MPMoviePlayerController 在 UIView 中使用默认控件样式播放视频如下:

self.player.view.frame = containerView.bounds;
[containerView addSubview: self.player.view];

使用播放/暂停按钮、时间和滑块等控件按预期显示。

但是,在到达媒体末尾时,媒体控制栏会做两件事:

1) 改变风格 - 这是我播放 MP3 时的风格

2) 更改视图中的位置 - 它不再停靠在 UIView 的底部,而是停靠在中间(垂直方向)。

有没有办法阻止这种行为并使控制栏保持在电影结尾处的状态?

发现这个: MPMoviePlayerController end of play my screen change to audio streaming controller

正是我在 iPad 上得到的行为。

我也试过用苹果自己的测试链接:http://devimages.apple.com/iphone/samples/bipbop/gear1/prog_index.m3u8

相同的行为。通过监控 MPMovieMediaTypesAvailableNotification,我发现在流结束时,movieMediaTypes 属性变为 Audio(仅)。

是否强制播放器停留在视频源上?

谢谢

【问题讨论】:

使用 Apple HLS 测试链接的相同行为:devimages.apple.com/iphone/samples/bipbop/gear1/prog_index.m3u8 【参考方案1】:

您是否按照Using Video 文档中的说明处理 MPMoviePlayerPlaybackDidFinishNotification ?

播放完成后,电影控制器会发送应用程序控制器对象收到的通知,该对象会释放不再需要的电影控制器。

【讨论】:

我确实收到了 didFinish.... 通知。如果我停止播放器和/或释放它和/或将其从超级视图中删除(尝试了所有组合),我有时会在它消失之前出现闪烁(这是播放器控制样式从视频到音频的变化)。 虽然闪烁很烦人,但我还是希望平滑过渡。只有我能想到的事情是:1)使用自定义播放器栏 - 这会增加工作量 2)监控播放持续时间,一旦达到总持续时间,停止播放器或简单地倒退到位置 0(或帧 1 ) - 不在我的 mac 附近,所以可以稍后再试 对于 Apple 自己的测试链接上的视频,movieMediaTypes 属性是否也更改为 Audio(仅)?如果是这种情况,您最好在 bugreport.apple.com 提交错误和/或通过 Apple Developer Connection 打开案例以获得修复 您好,Werner,感谢您的建议。我最终通过在movieMediaTypes更改时处理通知来解决它,如果我正在播放视频并且新的媒体类型是音频,那么我只需隐藏媒体控件(因为我知道它是从最后一瞬间)。当用户播放另一个媒体或重播相同的媒体时,我会恢复媒体控件。这是一个临时修复,我将在下一个版本中提供我自己的媒体控制 UI,因为它对所有需要媒体播放的应用程序都很方便。

以上是关于MPMoviePlayerController 在影片结尾更改控件样式的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MPMoviePlayerController 上处理多个 SRT 文件

在 MPMoviePlayerController 上执行捏合手势时屏幕黑屏

在 UITableViewCell 中嵌入 MPMoviePlayerController

MPMoviePlayerController 在影片结尾更改控件样式

后台的 MPMoviePlayerController / AVAudioSession 在来电后不会重新开始播放

MPMoviePlayerController 在启动前显示空白屏幕?