【问题标题】:Change of AVPlayer current item (item url) and start playback更改 AVPlayer 当前项(item url)并开始播放
【发布时间】:2017-03-14 15:28:05
【问题描述】:

我有一个 UITableView,其中的帖子包含指向 mp3 文件的 URL。通过点击 UITableViewCell 中的按钮,我计划获取 AVPlayer 的单例实例。如何为 AVPlayer 分配新 URL 并开始播放? AVPlayer 的 currentItem 只是一个 { get } 属性。

这就是我现在所拥有的。

import Foundation
import AVFoundation

class StreamMusicPlayer: AVPlayer {
    private override init(){
        super.init()
    }

    static func shared() -> AVPlayer{
        return AVPlayer()
    }

    func playItem(at itemURL: URL) {
        if StreamMusicPlayer.shared().isPlaying {
            StreamMusicPlayer.shared().pause()
        }

        //Change url of AVPlayerItem
        //And and assign it to shared() instance then begin playback
    }
}

extension AVPlayer {
    var isPlaying: Bool {
        return rate != 0 && error == nil
    }
}

【问题讨论】:

    标签: ios swift uitableview avfoundation avplayer


    【解决方案1】:

    这可能是你想要的。这并不完美。

    class StreamMusicPlayer: AVPlayer {
        private override init(){
            super.init()
        }
    
        static var shared = AVPlayer()
    
        static func playItem(at itemURL: URL) {
            StreamMusicPlayer.shared = AVPlayer(url: itemURL)
            StreamMusicPlayer.shared.play()
        }
    }
    
    extension AVPlayer {
        var isPlaying: Bool {
            return rate != 0 && error == nil
        }
    }
    

    我不得不将静态函数更改为普通变量。每次访问 .shared() 时,它都会初始化并返回一个新实例。

    那么你可以这样做:

    StreamMusicPlayer.playItem(at: URL(string: "http://antoon.io/e/mp3/")!)
    // Delay so you can hear it changing
    StreamMusicPlayer.playItem(at: URL(string: "http://antoon.io/e/mp3/2.mp3")!)
    

    【讨论】:

    • 谢谢!它有帮助。
    • 是否可以将 currentItem 属性添加到 StreamMusicPlayer 类,以跟踪当前播放音乐曲目的“共享”实例?
    • 如果您的意思是 URL,您可以添加 static var currentItem: String? 并在 playItem() 添加 StramMusicPlayer.currentItem = itemURL
    猜你喜欢
    • 2015-09-07
    • 2010-11-12
    • 2017-09-15
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 2019-01-22
    • 1970-01-01
    相关资源
    最近更新 更多