2017-05-06 2 views
0

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!) 

    } 

Storyboard

+0

같은 뷰 컨트롤러의 tableview입니까? 동영상은 어디에서 재생됩니까? 뷰 컨트롤러를 제시하거나 자식 뷰 컨트롤러로 포함해야합니다. 어떻게 지내니? – Scriptable

답변

0

당신이 호출 할 때마다 : let VideoPlayerController = self.storyboard?.instantiateViewController(withIdentifier: "player") as! VideoPlayerController이보기 컨트롤러의 새로운 인스턴스를 생성합니다.

은 모든보기 컨트롤러와 거의 같은 방식으로 작동하며 하위보기 컨트롤러로 포함시키고 수동으로 다른 VC에 추가하지 않는 한 일반적으로 전체 화면이며 필요에 따라 표시됩니다.

어느 쪽이든,이 작업을 수행하려면 플레이어보기 컨트롤러의 단일 인스턴스를 유지 관리해야합니다. 자신이하고있는 일과 달성하고자하는 일에 대해 정확히 설명 할 수 있다면 어떻게해야하는지에 대한 예를 제공 할 수 있습니다.