寻求特定时间线后的 MPMoviePlayerController 空白帧

Posted

技术标签:

【中文标题】寻求特定时间线后的 MPMoviePlayerController 空白帧【英文标题】:MPMoviePlayerController blank frame after seeking to particular time-line 【发布时间】:2011-09-01 11:49:45 【问题描述】:

我正在开发一个 iPhone 应用程序,我在其中使用 MPMoviePlayerController 播放视频。我使用自定义控件来播放视频。

我有一个显示视频时间线的滑块。使用此用户可以将电影搜索到电影的任何时间线。

当用户连续移动滑块时:

    仅在第一次暂停视频; [MPMoviePlayerController-obj pause] MPMoviePlayerController-obj.currentPlaybackTime = slider.value

当滑块动作结束时:

    播放视频; [MPMoviePlayerController-obj play]

这会从用户离开滑块的位置播放电影。但是,当电影播放完毕时,它会导致空白帧。这个缺陷是随机出现的;即不是所有的时间。

得到空白帧的原因是什么?我该如何解决?

【问题讨论】:

我在调试时也注意到,如果我在用户连续移动滑块时不设置 MPMoviePlayerController-obj.currentPlaybackTime ,它可以正常工作。但是,我想这样做是因为用户需要在通过移动滑块设置时间线时查看帧。 另外,当电影播放完毕(MPMoviePlayerPlaybackDidFinishNotification),如果问题存在,则MPmoviePlayerController的currentPlaybackTime为0;否则它等于电影的持续时间。有人可以帮帮我吗? 【参考方案1】:

我不确定这是否可行,但请尝试将initialPlaybackTime 设置为slider.valuecurrentPlaybackTime

【讨论】:

我已经尝试将 initialPlaybackTime 和 endPlaybackTime 设置为滑动(最小值和最大值)+ MPMoviePlayerController 的 currentPlaybackTime。但是,问题仍然存在。另外,我尝试了以下操作:在 [MPMoviePlayerController-obj play] 之后,我再次尝试将 currentPlaybackTime 设置为 slide.value。现在,没有黑框问题。但是,当滑块动作结束时,帧会重复(一个是由于播放,另一个是当我设置 currentPlaybackTime 时)。这会帮助别人帮助我吗? @Till,我的错。我将删除该注释。我错过了那份文档。 根据我的经验,使用流时 initialPlaybackTime 不起作用 - 我没有彻底调查,但在简短的测试中使用它并没有导致正确的初始搜索。我的解决方案是在播放状态更改为正在播放时使用 currentPlaybackTime。 不要给@Ben负面标记,他只是显示了一个选项,尽管他不确定并且不应该受到惩罚。【参考方案2】:

为确保您的内容没有缺陷,因此可能触发该问题,您应该尝试使用 Apple 的参考视频内容复制错误的 MPMoviePlayerController 结果。

HTTP 流:bipbop.m3u8 渐进式下载和本地化 回放:sample_mpeg4.mp4

我个人观察到许多与编码不当有关的问题。处理有损压缩内容时往往会发生奇怪的事情。这适用于视频(i 帧与 p 帧)以及音频(可变比特率)。

报告的播放持续时间不正确。此类问题可能会导致意外的完成状态。我见过MPMoviePlayerController 仍然显示要播放几秒钟的情况,即使实际视频显然已经完成。一旦用户在视频中四处寻找,这些情况就会经常发生。

一旦您确定使用给定的示例文件也出现了问题,您应该提交错误报告。

【讨论】:

感谢您的回复。我会试试这个。针对“报告播放时长不正确”,我们可以使用 AVFoundation 调用来生成电影时长 但是,我们不能改变 MPMoviePlayerController 的影片时长属性。如何验证这是否是导致问题的原因? 我已经为您提供了一些正确编码的内容选项。该内容的行为与您自己的内容有什么不同吗?

以上是关于寻求特定时间线后的 MPMoviePlayerController 空白帧的主要内容,如果未能解决你的问题,请参考以下文章

iOS 14 小部件扩展在获取时间线后崩溃

RAID5当一块硬盘离线后处理

为啥我的STM32F407发现刷机软件重新插线后生效?

通过 VBA excel 程序在 MS Word 标题中的边框线后添加页码和新行

HighChart:在网格线后显示一些数据

EasyNVR现场设备离线后无法自动重连如何优化?