在 Swift 和 AVPlayer 中显示音频流的图稿? [复制]
Posted
技术标签:
【中文标题】在 Swift 和 AVPlayer 中显示音频流的图稿? [复制]【英文标题】:Displaying artwork for audio stream in Swift and AVPlayer? [duplicate] 【发布时间】:2016-05-03 16:52:33 【问题描述】:我正在使用 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()
【问题讨论】:
使用contentOverlayView
。在这里查看我的答案:AVPlayerViewController using audio-only AVPlayer
@JAL 解决方案更接近我所拥有的,但我需要对其进行调整以使其正确居中。我将分享我的改编作为答案。
@JAL 我会接受您的回答,但您可能想在示例中添加代码以适当居中?
【参考方案1】:
在@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)
这里添加的两个关键是设置框架和边界。这里的框架使用屏幕大小,因为在调用 viewDidAppear()
之前,self.view.frame
不可用。需要设置边界以确保图像不会拉伸以填满屏幕。
另一件事,虽然 AVPlayerLayer 需要被实例化,但它实际上似乎不需要添加为层,至少基于实验。
此时唯一缺少的是能够屏蔽时间栏,而不会丢失音频控制菜单。
【讨论】:
以上是关于在 Swift 和 AVPlayer 中显示音频流的图稿? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
Swift 应用程序上的 AVPlayer 显示黑屏,但在播放视频时播放音频