在 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 显示黑屏,但在播放视频时播放音频

AVPlayer 和背景音频流

iOS开发:AVPlayer实现流音频边播边存

iOS开发:AVPlayer实现流音频边播边存

m3u8 音频流在 MPMoviePlayerController 中播放但不是 AVPlayer?

iOS开发 - AVPlayer实现流音频边播边存