我目前正在使用 Swift 测试AVPlayer与音频流网址的使用情况 . 有play()和pause()方法,但问题是,仅暂停,流仍然缓存在设备中 .
这是我的测试代码:
import UIKit
import AVFoundation
class ViewController: UIViewController {
let player = AVPlayer(URL: NSURL(string: "http://streaming.radio.rtl.fr/rtl-1-48-192")!)
@IBOutlet weak var btnPlay: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func btnPress(sender: AnyObject) {
if (btnPlay.titleLabel?.text == "Play") {
initPlayer()
btnPlay.setTitle("Stop", forState: UIControlState.Normal)
} else {
stopPlayer()
btnPlay.setTitle("Play", forState: UIControlState.Normal)
}
}
func initPlayer() {
player.play()
}
func stopPlayer() {
// player.currentItem = nil // Last thing I tried, but generate an error
player.pause()
}
}
Here are the issues when trying somethings :
player = nil
:"Cannot assign a value of type 'NilLiteralCOnvertible' to a value of type 'AVPlayer'"
player.currentItem = nil
:"Cannot assign to property: 'currentItem' is a get-only property"
我尝试了一切,甚至通过AVQueuePlayer没有任何有效的结果 . (显然,因为我的情况只有一个项目) .
如何 stop AVPlayer 或 destroy his instance ?
3 回答
如果将
player
声明为可选变量,则可以将播放器设置为nil
以取消分配它 .愚蠢的例子但它显示了会发生什么:
从这个post我找到了在离开或开始新玩家之前完全停止AVPlayer的最佳解决方案:
SWIFT 3 Version: