Luk*_*uke 0 avfoundation ios swift
我有一个 iOS 应用程序,目前它只是使用用户库中的 AVFoundation 播放视频。我想做的是根据视频的宽高比设置设备的方向。如果是纵向视频,我想将方向设置为纵向,如果标准 16:9 或 4:3,那么当然是横向,这样屏幕最终不会在黑条中浪费大量空间视频的两侧。
我想我可以通过获取视频的尺寸来确定纵横比,从而确定方向:
if width > height:
landscape
else:
portrait
Run Code Online (Sandbox Code Playgroud)
然而,事实证明这比我想象的要困难。我有一个AVPlayer对象,最初查看了它的元数据属性,但这显然不是我想要的元数据。然后我发现 AVPlayer.presentationSize 可以包含我正在寻找的信息,但是当我打印出来时 - 就在调用之前play()- 查看它时,我得到了以下信息:Optional((0.0, 0.0))
除了研究如何自己解析视频文件头以尝试访问此信息之外,API 中是否有任何地方可以向我公开此信息?谷歌搜索提供了大量有关如何在捕获视频时指定视频大小的信息,但关于这个特定问题的信息却很少。
您可以询问标的资产的规模:
let asset = player.playerItem.asset
let videoTrack = asset.tracks(withMediaType: .video).first!
let naturalSize = videoTrack.naturalSize
let transform = videoTrack.preferredTransform
let size = naturalSize.applying(transform)
Run Code Online (Sandbox Code Playgroud)