Ios 将视频从UITableViewController更改为在AVPlayerViewController中播放
我有一个AVPlayerViewController,它通过URL复制一些视频流,还有一个UITableViewController,它的单元格中包含用户可以选择复制的URL。当我单击任何单元格时,我调用函数来更改要复制的流(在AvPlayerViewController中声明的setCanaleDaRiprodurre),并传递新的流url。问题是该函数不会停止播放器,也不会更改流以进行复制。似乎我正在调用另一个AvPlayerController实例,但这不对,也许我需要一个单例实例? 我链接了2个类的代码和故事板结构Ios 将视频从UITableViewController更改为在AVPlayerViewController中播放,ios,swift,uitableview,avplayerviewcontroller,Ios,Swift,Uitableview,Avplayerviewcontroller,我有一个AVPlayerViewController,它通过URL复制一些视频流,还有一个UITableViewController,它的单元格中包含用户可以选择复制的URL。当我单击任何单元格时,我调用函数来更改要复制的流(在AvPlayerViewController中声明的setCanaleDaRiprodurre),并传递新的流url。问题是该函数不会停止播放器,也不会更改流以进行复制。似乎我正在调用另一个AvPlayerController实例,但这不对,也许我需要一个单例实例? 我链
class VideoPlayerController: AVPlayerViewController {
//static let sharedInstance = VideoPlayerController()
override func viewDidLoad() {
guard let url = URL(string: "http://live1.msf.ticdn.it/Content/HLS/Live/Channel(CH01HA)/Stream(03)/index.m3u8") else { return }
let playerItem = AVPlayerItem(url: url)
player = AVPlayer(playerItem: playerItem)
player?.play()
}
func setCanaleDaRiprodurre(url:String){
let url1 = URL(string:url)
let playerItem = AVPlayerItem(url: url1!)
player?.pause()
player?.replaceCurrentItem(with: playerItem)
player?.play()
print("Hello")
}
表单元格操作的摘录:
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let VideoPlayerController = self.storyboard?.instantiateViewController(withIdentifier: "player") as! VideoPlayerController
print(menuItems[indexPath.row].stream_url)
print("sta andanndddooooo")
VideoPlayerController.setCanaleDaRiprodurre(url: menuItems[indexPath.row].stream_url!)
//VideoPlayerController.sharedInstance.setCanaleDaRiprodurre(url: menuItems[indexPath.row].stream_url!)
}
每次调用时:
让VideoPlayerController=self.storyboard?。将EVIEWController(带标识符:“player”)实例化为!VideoPlayerController
将创建视图控制器的新实例
avplayervewcontroller
的作用与任何视图控制器几乎相同,它通常是全屏的,并根据需要显示,除非您将其作为子视图控制器嵌入并手动将其视图添加到另一个VC
无论哪种方式,您都需要维护播放器视图控制器的单个实例,才能使其正常工作。如果您能准确地解释您正在做什么以及您试图实现什么,我可以提供一个如何做到这一点的示例。您的tableview是否在同一个视图控制器中?视频在哪里播放?您应该显示视图控制器或将其作为子视图控制器嵌入。你是怎么做到的?