AVPlayerViewController拒绝加载/播放视频文件/流

时间:2015-11-08 17:50:19

标签: cocoa-touch avfoundation hls avplayerviewcontroller avkit

我试图在我的应用中加载HLS流,但我无法让它们正常显示。我有一个AVPlayerViewController设置为我的应用程序的初始视图控制器和以下代码:

import UIKit
import AVKit
import AVFoundation

private var playerContext = 0

class PlayerViewController: AVPlayerViewController {    
    override func awakeFromNib() {
        print("awake!")

        let URL = NSURL(string: "http://live-lh.daserste.de/i/daserste_de@91204/index_2692_av-b.m3u8")!
        let player = AVPlayer(URL: URL)
//      player.addObserver(self, forKeyPath: "status", options: [.Old, .New], context: &playerContext) // commented out for testing purposes, doesn't make any difference

        self.player = player
        self.showsPlaybackControls = true
    }

    override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>) {
        if context == &playerContext {
            print("\(keyPath!): \(change!)")
        } else {
            super.observeValueForKeyPath(keyPath, ofObject: object, change: change, context: context)
        }
    }

    // viewDidLoad() and didReceiveMemoryWarning()
}

在桌面版Safari中打开该URL可以很好地工作(尽管您可能必须在德国看到它),所以我不知道为什么它不能在iOS上运行。我的应用程序显示了以下内容,而不是流:

Screenshot of the running app

我的代码出了什么问题?

更新:无论我使用什么网址,都会发生同样的事情,即使是无效的网址也是如此。我不知道这里发生了什么。

1 个答案:

答案 0 :(得分:0)

事实证明,流没有加载,因为我忘了禁用ATS。难怪所有那些仅限HTTP的流都没有加载。 DERP

(我意识到禁用ATS很少是一个很好的解决方案,但在这种情况下,我可以完全控制加载的URL,所以那里。)