Issues with vertical video orientation in SKVideoNode using Swift

1k Views Asked by At

The following code shows my video file in correct zPosition with the other elements I'm working with, creating a background video.

The problem I'm having is that the vertical video (1080x1920 pixels) gets rotated 90 degrees counterclockwise, and is stretched to fit as a landscape video. How can I ensure correct orientation without sacrificing my need to use the SKVideoNode with zPosition?

let videoNode: SKVideoNode? = {

    guard let urlString = Bundle.main.path(forResource: "merry", ofType: "mov") else {
        return nil
    }

    let url = URL(fileURLWithPath: urlString)
    let item = AVPlayerItem(url: url)
    player = AVPlayer(playerItem: item)

    return SKVideoNode(avPlayer: player)

}()

videoNode?.position = CGPoint( x: frame.midX, y: frame.midY)
videoNode?.size = self.frame.size
videoNode?.zPosition = 20
addChild((videoNode)!)

player.play()
player.volume = 0

Many thanks!

1

There are 1 best solutions below

2
Mr_P On BEST ANSWER

Got there in the end with a workaround:

// fix to rotate vertical video by 90 degrees and resize to fit....
videoNode?.zRotation = CGFloat(-Double.pi) * 90 / 180
videoNode?.size.width = self.frame.size.height
videoNode?.size.height = self.frame.size.width