iOS 14中,肖像模式视频不再保持纵横比。

7

使用 Texture 3.0.0、XCode 12 和 iOS 14 版本,在 iOS 14 设备上出现的问题是,竖屏视频以错误的分辨率加载(它们的宽度可能看起来与高度交换)。

自动播放正常,但手动播放不行。 竖屏视频无法正常播放,但横屏视频可以。 问题在于应用的引力似乎使用了竖屏视频的错误宽度/高度来拉伸视频。

以下是示例应用(使用我上传的公共竖屏视频):

//
//  ViewController.swift
//  test video
//
//  Created by Ericos Georgiades on 22/09/2020.
//

import UIKit
import AVFoundation
import AsyncDisplayKit

class ViewController: UIViewController {

    
    @IBOutlet weak var videoView: UIView!
    private let videoNode = ASVideoNode();
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        videoNode.gravity = AVLayerVideoGravity.resizeAspectFill.rawValue;
        videoNode.muted = true;
        videoNode.shouldAutorepeat = true;
        videoNode.shouldAutoplay = false; // works if true
        videoView.addSubnode(videoNode);
        videoNode.frame = videoView.frame;
        
        let asset = AVAsset(url: URL(string: "https://storage.googleapis.com/pao-uat-6b24c.appspot.com/users/0QhK2lnaQ49BftJTRQ46/spots/7q0Q2TjiIyHyrNTBbJOO/media/WaMnS8Np5vkTcIV0rGyJ/WaMnS8Np5vkTcIV0rGyJ?alt=media&token=75542345-06cc-4e37-a422-1ff2a1cf47c2")!)
        videoNode.asset = asset

        DispatchQueue.main.asyncAfter(deadline: .now() + 5) {
            self.videoNode.play();
        }
    }
}

我还没有弄清楚这是库中的一个错误还是可以在Swift中解决(或者是否需要解决)。

同时作为一个错误发布在https://github.com/TextureGroup/Texture/issues/1918

1个回答

1
尝试在调用play()之前调用didExitPreloadState()
...
DispatchQueue.main.asyncAfter(deadline: .now() + 5) {
      self.videoNode.didExitPreloadState()
      self.videoNode.play();
}
...

示例中,他们在play()之前立即设置资产。资产的setter在内部调用didExitPreloadState()(请参见此处)。

这真的有效吗?这只会让我的应用程序崩溃。 - Tometoyou

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接