我正在使用Swift测试AVPlayer与音频流URL的使用。它有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()
}
}
尝试某些操作时出现的问题:
player = nil
:“无法将类型为 'NilLiteralConvertible' 的值分配给类型为 'AVPlayer' 的值”
player.currentItem = nil
:“无法分配给属性:'currentItem' 是只读属性”
我尝试了所有方法,甚至使用了AVQueuePlayer,但没有实际效果(显然,因为在我的情况下只有一个项目)。
如何停止AVPlayer或销毁它的实例?
player = nil
表示将播放器对象本身设置为 nil,而player.currentItem = nil
表示将当前播放项设置为 nil。 - JALplayer
是AVPlayer的一个实例,所以我不能直接这样做。请查看函数stopPlayer()
,我已经测试过了。 - w3spi