Swift-AVFoundation-检查视频尺寸/纵横比

时间:2020-06-17 09:17:23

标签: ios swift avfoundation

我有一个iOS应用程序,此应用程序现在仅使用用户库中的AVFoundation播放视频。我想做的是根据视频的长宽比设置设备的方向。如果是纵向视频,我想将方向设置为纵向,如果是标准16:9或4:3,则当然是横向,这样屏幕就不会在黑色条形中浪费很多空间视频的两边。

我认为我可以通过获取视频的尺寸来确定宽高比,从而确定方向:

if width > height:
    landscape
else:
    portrait

但是,事实证明,这比我想象的要困难得多。我有一个AVPlayer对象,最初查看了它的元数据属性,但这显然不是我想要的那种元数据。然后,我发现AVPlayer.presentationSize可以获取我想要的信息,但是当我打印出来时-在调用play()之前-要查看它,我得到了以下信息:Optional((0.0, 0.0))

简要研究如何自己解析视频文件头以尝试访问此信息,API中是否有暴露给我的地方? Google搜集了很多有关如何在捕获视频时指定视频大小的信息,但关于此特定问题的信息却很少。

1 个答案:

答案 0 :(得分:2)

您可以询问基础资产的大小:

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)
相关问题