6

iOS デバイスとシミュレーターの両方でビデオ コンテンツを再生するのに問題があります。

目標: ここで指定されたオンライン リソースからビデオをストリーミングします: hlsを使用したパブリック ビデオ ストリームAVPlayerViewControllerで、その仕組みを学習します。

これにより一貫してエラーはスローされませんでしたが、View Controller はこのビューを表示しました。

AvPlayerViewController

一歩下がってローカル リソースでテストすることにしたので、クイックタイム (.m4v) で短いスクリーン キャプチャを撮影し、プロジェクトに保存しました。これにより、まったく同じ動作が発生し、エラーは報告されませんでした。

コードは次のとおりです(AVKitおよびAVFoundationインポートされます):

var playerVC : AVPlayerViewController!
var playerItem : AVPlayerItem!
var player : AVPlayer!
var playerLayer: AVPlayerLayer!

override func viewDidAppear(animated: Bool) {

    let bundle = NSBundle.mainBundle()
    let path = bundle.pathForResource("testVideos", ofType: "m4v")
    let url = NSURL.init(string: path!)

    playerItem = AVPlayerItem.init(URL: url!)
    player = AVPlayer.init(playerItem: playerItem)
    playerVC = AVPlayerViewController.init();
    playerVC.player = player;

    self.presentViewController(playerVC, animated: true) { () -> Void in
        self.playerVC.player?.play()
    }
}

IpadMini 4 へのビルド時に次の警告が表示されます。<CATransformLayer: 0x136ea1030> - changing property masksToBounds in transform-only layer, will have no effect

Xcode: バージョン 7.1 対象: iOS 9.0

更新 AVPlayerViewController からの厄介な制約出力です。これが貢献しているとは思いませんが、ここにあります:

2015-10-28 15:12:02.777 AVKitTest[4441:94545] 制約を同時に満たすことができません。おそらく、次のリストの制約の少なくとも 1 つが望ましくないものです。これを試してください: (1) 各制約を見て、どれが予期しないものかを把握してみてください。(2) 不要な制約を追加したコードを見つけて修正します。(注: 理解できない NSAutoresizingMaskLayoutConstraints が表示されている場合は、UIView プロパティ translatesAutoresizingMaskIntoConstraints のドキュメントを参照してください) ( "", "", "", "", "", "", "", "" )

4

2 に答える 2

5

それはばかげたものであることがわかりました。変更する必要がありました。

let url = NSURL.init(string: path!) playerItem = AVPlayerItem.init(URL: url!)

と:

let url = NSURL.init(fileURLWithPath: path!) let playerItem = AVPlayerItem.init(URL: url)

于 2015-10-28T20:00:31.560 に答える
0

AVPlayerLayer を正しく設定していないようです。

AVPlayerLayer のドキュメントを参照してください。「AVPlayerLayer のインスタンスを返し、指定された AVPlayer のビジュアル出力を表示します。」

AVFoundation プログラミング ガイドの階層の例

于 2015-10-28T18:16:01.893 に答える