我试着用AVPlayerLooper
在电视操作系统应用程序中循环播放视频,因为这应该可以消除再次播放视频时的暂停/打嗝。我看了WWDC2016
视频https://developer.apple.com/videos/play/wwdc2016/503/并尝试实现代码,但它不循环。我有一个PlayerViewController
,它继承了AVPlayerViewController
。我把代码让视频循环。如果我有下面的代码,它什么也不显示。如果我将第二行更改为self.queuePlayer = AVQueuePlayer(playerItem:playerItem)
,它只会播放一次。
let playerItem = AVPlayerItem(url: url as URL)
self.queuePlayer = AVQueuePlayer() //I declared this as a variable in the view controller
self.playerLayer = AVPlayerLayer(player: self.queuePlayer) //I declared this as a variable in the view controller
let playerLooper = AVPlayerLooper(player: self.queuePlayer!, templateItem: playerItem)
self.view.layer.addSublayer(self.playerLayer!)
self.playerLayer?.frame = self.view.frame
self.queuePlayer?.play()
你们中有谁用最新的AVPlayerLooper
成功地播放了循环视频吗?
5条答案
按热度按时间sy5wg1nm1#
我自己解决了这个问题。
playerLooper必须是类中的成员变量,否则它将无法工作,因为在调用方法后,局部变量将消失。所以我把这一行放在类的开头来声明它。我没有将其声明为AVPlayerLooper,因为这仅适用于tvos10.0和更新版本。我希望我的班级能适应tvos9.0。这是我的工作代码。
btqmn9zl2#
Objective-C版本:
06odsfpq3#
Swift 5自定义类,用于循环播放视频而不会出现任何故障
使用方法:
5sxhfpxr4#
您的实现的问题是您在函数级别声明
AVPlayerLayer
,而它应该在类级别声明。ctzwtxfj5#
我创建了
AVQueuePlayer
的子类Apple Docs:通过向播放器循环器传递
AVQueuePlayer
和模板AVPlayerItem
的引用,可以创建一个播放器循环器,循环器会自动管理此内容的循环播放用途