如何解决肖像视频在iOS 14中不再保留长宽比
使用带有XCode 12和iOS 14的Texture 3.0.0版本,仅在iOS 14设备上会出现一个问题,即纵向视频加载时的分辨率不正确(似乎它们的宽度和高度互换了)。 / p>
自动播放可以正常工作,但手动播放则不能。 肖像视频坏了,但风景视频没有坏。 问题在于,施加的重力似乎会使纵向视频使用错误的宽度/高度来拉伸视频。
下面的示例应用程序(使用我上传的公开肖像视频):
//
// 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中紧接play()
之前设置资产。资产的设置者在内部调用didExitPreloadState()
(请参阅here)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。