Airplay dual screen, balck screen after AVPlayer restart

I am trying to scroll through a view with multiple videos. In this case, I have a blank screen:

  • I am creating a scroll view
  • Add AVFoundation

    AVPlayer

    each slide.
  • Each AVPlayer stores in an array

Everything works almost fine, in one case a black screen. When I connect via Airplay to my TV and move the scroll view. My videos show a black screen. Voice is still available. Below is my function to show videos on two screens. Any idea what's wrong? When I check the simulator works fine.

In the debugger, the problem is here: "let avPlayerLayer = AVPlayerLayer (player: oo)"

func loadContentSecondScreen() {

    var iPage:Int = self.isPage

    if (iPage == 0) {
        iPage = 1
    }//end if

    let oAllScreens = UIScreen.screens()

    // Jesli sa podpiete ekrany.
    if (oAllScreens.count > 1 && self.oSecondScreen != nil) {
        // Usuwamy stare widoki.
        if (self.oSecondWindow != nil) {
            for view in self.oSecondWindow!.subviews {
                view.removeFromSuperview()
            }//end for
        }//end if

        // Czarne tlo.
        let view:UIView = UIView(frame: self.oSecondScreen!.bounds)
            view.backgroundColor = UIColor.blackColor()

        self.oSecondWindow?.hidden = false
        self.oSecondWindow?.addSubview(view)

        // Jesli sa elementy do wyswietlania.
        if (self.Slides > 0) {

            let obj:GalleryAsset = self.Content[iPage-1]
            let file:String      = obj.zoom

            let ImageContent:UIView = UIView(frame: self.oSecondScreen!.bounds)

            if (obj.type == "jpg" || obj.type == "jpeg" || obj.type == "png") {
                // Ladujemy obrazy do slidera.
                // Czy plik istenieje i mozna go zaladowac.
                if (self.fileExistsInAssetFolder(obj.zoom) == true) {
                    let imageImage: UIImage   = UIImage(contentsOfFile: self.pathAsset.stringByAppendingPathComponent(obj.zoom))!
                    let imageView:UIImageView = UIImageView(image: imageImage)
                        imageView.contentMode = UIViewContentMode.ScaleAspectFill
                        imageView.frame       = self.oSecondScreen!.bounds
                        ImageContent.addSubview(imageView as UIView)
                }

            } else if (obj.type == "mp4") {

                // Ladujemy video do slidera.
                if (self.fileExistsInAssetFolder(obj.zoom) == true) {

                    let VideoContainer:UIView = UIView(frame: self.oSecondScreen!.bounds)
                        VideoContainer.layer.backgroundColor = UIColor.blackColor().CGColor

                    for o in self.avPlayerList {
                        if (iPage-1 == o.i) {
                            //if !o.o {
                                let avPlayerLayer = AVPlayerLayer(player: o.o)
                                    avPlayerLayer.frame = VideoContainer.bounds
                                VideoContainer.layer.addSublayer(avPlayerLayer)
                                ImageContent.addSubview(VideoContainer)
                            //}//end if let
                        }//end if
                    }//end for
                }//end if

            }//end if

             self.oSecondWindow?.addSubview(ImageContent)
        }
    }

}//end loadContentSecondScreen()

      

+3


source to share





All Articles