swift - 肖像视频在 iOS 14 中不再保留纵横比

标签 swift video ios14

使用带有 XCode 12 和 iOS 14 的 Texture 3.0.0 版本,一个仅出现在 iOS 14 设备上的问题是,纵向视频以错误的分辨率加载(看起来它们的宽度与高度交换了)。
自动播放工作正常,但手动播放不行。
纵向视频坏了,但横向视频没有。
问题是应用的重力似乎使用错误的纵向视频宽度/高度来拉伸(stretch)视频。
下面的示例应用程序(使用我上传的公共(public)肖像视频):

//
//  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

最佳答案

尝试调用didExitPreloadState()之前 play() :

...
DispatchQueue.main.asyncAfter(deadline: .now() + 5) {
      self.videoNode.didExitPreloadState()
      self.videoNode.play();
}
...
sample他们将 Assets 设置在 play() 之前. Assets 的设置者调用 didExitPreloadState()内部(见 here)。

关于swift - 肖像视频在 iOS 14 中不再保留纵横比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64208749/

相关文章:

ios - 使用自动布局和 NSLayoutConstraints 以编程方式检索 UIView 的宽度和高度?

ios - 在 Collection View 单元格中使用淡入淡出效果动画图像

html - YouTube 嵌入动态大小与最小和最大大小

android - 如何在 Android 的 webView 中显示 YouTube 视频

android - 在 Android 设备上拍摄视频并在 iOS 设备上播放

arrays - 追加字符串比追加字符快得多

macos - 在 NSView 中调用 `print` 打开打印对话框

swift - 从iOS的Core Data 14 WidgetKit 中获取数据

ios - 我们可以检查允许应用程序请求跟踪切换是否打开

ios - 如何从 PHPickerViewController 委托(delegate)中获取实时照片或视频