Я создаю простой видеоплеер 360, используя SpriteKit, SceneKit и CoreMotion. В видео я вижу искажение / искажение . См .: изображение деформации видео в scenekit
Видео 3840 x 1920. Я знаю, что видео хорошее, потому что когда я загружаю его на YouTube, нет искажений. Смотрите: изображение видео на плеере YouTube без искажений
Кто-нибудь сталкивался с этим раньше? Может я что-то упустил? Видео воспроизводится, звук в порядке, отслеживание камеры также хорошо, проблема заключается только в деформации видео.
Вот основа моего плеера:
self.player = AVPlayer(url: url)
let videoNode = SKVideoNode(avPlayer: player)
// set size to 3840 x 1920 resolution
let size = CGSize(width: videoWidth, height: videoHeight)
videoNode.size = size
videoNode.position = CGPoint(x: size.width/2.0, y: size.height/2.0)
let spriteScene = SKScene(size: size)
spriteScene.addChild(videoNode)
let sphere = SCNSphere(radius: 30)
sphere.firstMaterial?.isDoubleSided = true
sphere.firstMaterial?.diffuse.contents = material
let sphereNode = SCNNode(geometry: sphere)
sphereNode.position = SCNVector3Make(0,0,0)
sphereNode.rotation = SCNVector4Make(1, 0, 0, Float.pi)
// Set the sceneView
let scene = SCNScene()
sceneView.scene = scene
sceneView.showsStatistics = false
sceneView.addGestureRecognizer(tap)
// Camera
cameraNode.camera = SCNCamera()
cameraNode.camera?.automaticallyAdjustsZRange = true
cameraNode.position = SCNVector3Make(0, 0, 0)
// Add nodes to scene
scene.rootNode.addChildNode(sphereNode)
scene.rootNode.addChildNode(cameraNode)
sceneView.play(self)