URL을 통해 일부 비디오 스트림을 재생하는 AVPlayerViewController와 재생할 수있는 URL을 셀에 포함하는 UITableViewController가 있습니다. 어떤 셀을 클릭하면 새 스트림 URL을 전달하는 스트림을 재생할 스트림 (AvPlayerViewController에 선언 된 setCanaleDaRiprodurre)을 변경하기위한 함수를 호출합니다. 문제는이 함수가 플레이어를 멈추지 않고 재생할 스트림을 변경하지 않는다는 것입니다. 나는 AvPlayerController의 또 다른 인스턴스를 호출하는 것 같고 그것은 올바르지 않습니다, 아마도 싱글 톤 인스턴스가 필요합니까? 2 개의 클래스 코드와 스토리 보드 구조를 연결합니다. 테이블 셀 동작의AVPlayerViewController에서 재생할 비디오를 UITableViewController에서 변경하십시오.
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!)
}
같은 뷰 컨트롤러의 tableview입니까? 동영상은 어디에서 재생됩니까? 뷰 컨트롤러를 제시하거나 자식 뷰 컨트롤러로 포함해야합니다. 어떻게 지내니? – Scriptable