iOS 7 MPMoviePlayerController 向前搜索按钮将视频带到结尾并显示黑屏

objectiveIOS

1个回答

写回答

Cloud923

2025-06-18 20:05

+ 关注

IOS
IOS

<IOS 7 MPMoviePlayerController 向前搜索按钮将视频带到结尾并显示黑屏

IOS 7 中,MPMoviePlayerController 是一个常用的视频播放控件。然而,有一种情况是,当用户在播放视频时点击了向前搜索按钮,有时会导致视频直接跳到结尾并显示黑屏,这是一个令人困扰的问题。

这个问题通常发生在 IOS 7 上,在后续的 IOS 版本中已经修复。但是,如果你的应用程序仍然需要支持 IOS 7,那么你可能需要考虑解决这个问题。

问题的原因

问题的原因是 IOS 7 MPMoviePlayerController 在处理向前搜索时存在一个 bug。当用户点击向前搜索按钮时,视频会跳转到某个时间点,但是在某些情况下,视频会直接跳到结尾并显示黑屏。这可能是由于在跳转时计算时间点的逻辑错误导致的。

解决方案

为了解决这个问题,我们可以通过监测向前搜索按钮的点击事件,并手动进行视频跳转来规避 bug。

首先,我们需要添加一个观察者来监听 MPMoviePlayerPlaybackDidFinishNotification 通知。这个通知会在视频播放结束时触发。

Swift

NotificationCenter.default.addObserver(self, selector: #selector(moviePlaybackDidFinish), name: .MPMoviePlayerPlaybackDidFinish, object: nil)

接下来,我们需要在 moviePlaybackDidFinish 方法中处理视频播放结束的逻辑。我们可以检查视频是否已经播放到结尾,如果是的话,我们可以将视频的当前时间设置为一个稍微短一些的时间点,以避免黑屏。

Swift

@objc func moviePlaybackDidFinish(notification: NSNotification) {

guard let player = notification.object as? MPMoviePlayerController else {

return

}

if player.currentPlaybackTime == player.duration {

player.currentPlaybackTime = player.duration - 1

}

}

通过将当前播放时间设置为视频结尾前的一个时间点,我们可以避免黑屏问题的发生。

案例代码

下面是一个完整的示例代码,演示了如何解决 IOS 7 MPMoviePlayerController 向前搜索按钮导致黑屏的问题。

Swift

import MediaPlayer

class ViewController: UIViewController {

var moviePlayer: MPMoviePlayerController!

override func viewDidLoad() {

super.viewDidLoad()

let vIDEOPath = Bundle.mAIn.path(forResource: "vIDEO", ofType: "mp4")

let vIDEOURL = URL(fileURLWithPath: vIDEOPath!)

moviePlayer = MPMoviePlayerController(contentURL: vIDEOURL)

moviePlayer.view.frame = view.bounds

view.addSubview(moviePlayer.view)

NotificationCenter.default.addObserver(self, selector: #selector(moviePlaybackDidFinish), name: .MPMoviePlayerPlaybackDidFinish, object: nil)

moviePlayer.play()

}

@objc func moviePlaybackDidFinish(notification: NSNotification) {

guard let player = notification.object as? MPMoviePlayerController else {

return

}

if player.currentPlaybackTime == player.duration {

player.currentPlaybackTime = player.duration - 1

}

}

}

以上就是解决 IOS 7 MPMoviePlayerController 向前搜索按钮导致黑屏的问题的解决方案。通过手动处理视频播放结束的逻辑,我们可以避免黑屏问题的发生,并提供更好的用户体验。如果你的应用程序仍然需要支持 IOS 7,那么这个解决方案可能会对你有所帮助。

举报有用(4分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号