簡體   English   中英

iOS 9:使用AVPlayerViewController Swift。 (划掉播放按鈕)

[英]iOS 9: Using AVPlayerViewController Swift. (crossed out play button)

我在ios設備和模擬器中播放視頻內容時遇到了一些麻煩。

目標:從此處給出的在線資源中流式傳輸視頻使用hls使用AVPlayerViewController 公共視頻流 ,只是為了了解它是如何工作的。

這始終導致沒有拋出錯誤,但視圖控制器向我展示了這個視圖。

AvPlayerViewController

我決定退后一步測試一個本地資源,所以我在quicktime(.m4v)中拍攝了一個短屏捕獲並將其保存到項目中。 這導致完全相同的行為,沒有報告錯誤。

這是代碼(導入AVKitAVFoundation ):

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)看看每個約束並試着找出你不期望的東西; (2)找到添加了不需要的約束或約束的代碼並修復它。 (注意:如果你看到你不理解的NSAutoresizingMaskLayoutConstraints,請參閱UIView屬性的文檔translatesAutoresizingMaskIntoConstraints)(“”,“”,“”,“”,“”,“”,“”,“” )

原來這是愚蠢的事情,只需要改變:

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

有:

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

看起來你沒有正確設置AVPlayerLayer。

查看AVPlayerLayer的文檔:“返回AVPlayerLayer的實例以顯示指定AVPlayer的可視輸出。”

“AVFoundation編程指南”中的示例層次結構

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM