0

アプリで 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()
}

その URL をデスクトップの Safari で開くと完全に機能します (ただし、表示するにはドイツにいる必要があるかもしれません)。そのため、iOS で機能しない理由がわかりません。ストリームの代わりに、私のアプリはこれを表示します:

実行中のアプリのスクリーンショット

コードの何が問題になっていますか?

更新:使用する URL に関係なく、無効な URL を使用してもまったく同じことが起こります。ここで何が起こっているのかわかりません。

4

1 に答える 1

0

ATS を無効にするのを忘れたため、ストリームが読み込まれなかったことがわかりました。これらの HTTP のみのストリームがすべて読み込まれなかったのも不思議ではありません。ダープ

(ATS を無効にすることが良い解決策になることはめったにないという事実を認識していますが、この場合、読み込まれた URL を完全に制御できるので、そこにあります。)

于 2015-11-08T21:45:10.327 に答える