0

我有一個AVPlayerViewController,我用AVPlayer和一些AVPlayerItem(iOS 10,Xcode 8,Objective C)初始化。 AVPlayerViewController在某些子視圖內呈現「內聯」,並且一切與原生播放控件完美配合。AVPlayerViewController從全屏返回後停止

當我按下本機全屏按鈕時,它也可以正常工作並切換到全屏模式(左上角的完成按鈕)。

我的問題是,當我按完成按鈕從全屏返回時,播放器出於某種原因停止播放,重置本身,並且如果我檢查.currentItem,我看它是nil

這裏發生了什麼?爲什麼不能AVPlayerViewController保持其AVPlayerItem之間切換/全屏?

+1

「這裏發生了什麼」好問題。但是你根本沒有顯示任何代碼,所以誰知道呢?你描述的行爲不會發生,例如,下載並運行此示例項目:https://github.com/mattneub/Programming-iOS-Book-Examples/tree/master/bk2ch15p660EmbeddedAVKit當您播放電影並展開到全屏並點擊完成時,我們暫停,這就是所有;你可以從這一點恢復。沒有什麼是「重置」。所以_you_必須做一些重置AVPlayer的東西。但是你沒有提供任何線索。 – matt

+0

你說得對,我應該發佈一些代碼。我用一些代碼發佈我的解決方案 – mllm

回答

0

使用@馬特的參考,我看到了什麼,我會做不同的是,設置AVPlayerViewControllerplayer財產沒有AVPlayerItem,只有將它設置之後(依靠replaceCurrentItemWithPlayerItem()

換句話說 - 從我的經驗,你應該初始化兩個AVPlayerViewControllerAVPlayerURL或任何AVPlayerItem,然後才加入AVPlayerViewController作爲一個子視圖控制器

代碼使用沒有自動版式:

if let playerView = self.playerView { 
    let playerItem = AVPlayerItem(url: self.url) 
    let player = AVPlayer(playerItem: playerItem) 

    let playerVc = AVPlayerViewController() 
    playerVc.player = player 

    self.addChildViewController(playerVc) 
    playerVc.view.frame = playerView.bounds 
    playerView.addSubview(playerVc.view) 
    playerVc.didMove(toParentViewController: self) 

    player.play() 
} 
+1

你好,@ mllm我面臨同樣的問題。我使用與您的代碼相同的代碼。 但是,當我切換到全屏模式的視頻時,將其播放/暫停模式保持爲全屏模式。但是當我全屏退出時,按下退出按鈕時,它總是會暫停到相同的時間。 –