我正在使用AVPlayerViewController在tvOS上播放音频流,我现在想要同时显示一些相关的艺术作品。
我不确定我是否应该以某种方式将其覆盖在顶部或者告诉AVPlayerViewController关于艺术品。如果是后者,我似乎无法正确地告诉AVPlayerViewController有关它的方法吗?有没有人有适当方法的迹象?
class StreamPlayerViewController: AVPlayerViewController
var playerItem:AVPlayerItem?
override func viewDidLoad() {
let videoURL = NSURL(string: "http://example.org/aac.m3u")
playerItem = AVPlayerItem(URL: videoURL!)
self.player=AVPlayer(playerItem: playerItem!)
let playerLayer=AVPlayerLayer(player: player)
playerLayer.frame=CGRectMake(0, 0, 300, 50)
self.view.layer.addSublayer(playerLayer)
// TODO add art work or other metadata, not coming from stream
// TODO Tell player stream is of infinite time
self.player?.play()
}
}
答案 0 :(得分:0)
关闭@JAL(original code)提供的评论后,代码如下:
override func viewWillAppear(animated: Bool) {
let image = UIImage(named: "stationAlbumArt")
let albumArtView = UIImageView(image: image)
// ensure view is screen size
albumArtView.frame = UIScreen.mainScreen().bounds
// set bounds, so that image stretch to fill
albumArtView.bounds = CGRectMake(0, 0, image!.size.width, image!.size.height)
self.contentOverlayView?.addSubview(albumArtView)
}
这里的两个关键添加是设置框架和边界。此处的框架使用的是屏幕尺寸,因为self.view.frame
在调用viewDidAppear()
之前不可用。需要设置边界以确保图像不会伸展以填满屏幕。
另一件事,虽然需要实例化AVPlayerLayer,但实际上似乎并不需要将其添加为图层,至少基于实验。
此时唯一缺少的是能够屏蔽时间栏,而不会丢失音频控制菜单。