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
No one has answered this question yet
Check out similar questions: