MPMoviePlayerController 在 5 秒后停止播放 - Swift

MPMoviePlayerController Stops Playing After 5 seconds - Swift

我有一个视频正在尝试使用 MPMoviePlayerController 播放,它加载正常,但在 5 秒后中断。我找到了这个 post,但它并不真正适用于 swift。

MPMoviePlayerController stops playing the video after 5s

这是我的代码。

import MediaPlayer




class ViewController: UIViewController  {


override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.



    var moviePlayer: MPMoviePlayerController?



let url = NSURL(string: "http://path/to/video.m3u8")

    moviePlayer = MPMoviePlayerController(contentURL: url)

    if let player = moviePlayer {

        player.view.frame = CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: self.view.frame.size.height)
        player.view.sizeToFit()
        player.scalingMode = MPMovieScalingMode.None


        player.movieSourceType = MPMovieSourceType.Streaming
        //player.repeatMode = MPMovieRepeatMode.One


        player.play()

        self.view.addSubview(player.view)

        NSNotificationCenter.defaultCenter().addObserver(
            self,
            selector: "metadataUpdated",
            name: MPMoviePlayerTimedMetadataUpdatedNotification,
            object: nil)

    }

}

您的 moviePlayer 会超出范围吗?您是否尝试过将其设为成员变量?

moviePlayerviewDidLoad 的局部变量,因此一旦该函数完成,我看不出有任何理由不释放您的播放器。

如果您改为将其设为 class 的变量,其生命周期将延长以匹配您的 class 的生命周期。

类似

class ViewController: UIViewController {

var player: MPMoviePlayerController?

    override func viewDidLoad() {
        // ...
        self.player = MPMoviePlayerController(contentURL: url) // won't go out of scope at end of viewDidLoad()
        // ...
    }