更改 AVPlayer 当前项目(项目 url)并开始播放
Change of AVPlayer current item (item url) and start playback
我有一个 UITableView,其中的帖子包含 URLs 到 mp3 文件。通过点击 UITableViewCell 中的按钮,我计划获取 AVPlayer 的单例实例。如何将新的 URL 分配给 AVPlayer 并开始播放? 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
}
}
这可能就是您想要的。它并不完美。
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()
时,它都会初始化并 return 一个新实例。
那么你可以这样做:
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")!)
我有一个 UITableView,其中的帖子包含 URLs 到 mp3 文件。通过点击 UITableViewCell 中的按钮,我计划获取 AVPlayer 的单例实例。如何将新的 URL 分配给 AVPlayer 并开始播放? 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
}
}
这可能就是您想要的。它并不完美。
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()
时,它都会初始化并 return 一个新实例。
那么你可以这样做:
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")!)