从 PHAsset 获取视频时如何检测视频是不是为横向/纵向?

Posted

技术标签:

【中文标题】从 PHAsset 获取视频时如何检测视频是不是为横向/纵向?【英文标题】:How to detect if video is Landscape/portrait when fetched from PHAsset?从 PHAsset 获取视频时如何检测视频是否为横向/纵向? 【发布时间】:2016-06-02 15:47:58 【问题描述】:

我正在从 PHAsset 获取视频,因此用户可以选择视频并导入以执行编辑。但是用户应该只能选择横向视频,如果用户选择纵向视频,她/他会收到警告消息,指出其纵向视频因此无法导入编辑。

这样做的一种方法是从 PHFetchResults 的 URL 创建 AVAsset,然后检查一个preferedTransform,但这将是非常昂贵的操作,对吗?

有没有办法在不创建 AVasset 的情况下做到这一点?

【问题讨论】:

我觉得没有你想象的那么贵。 嗯,我在想我可以检查缩略图的图像方向来识别视频是否是纵向的,这不需要制作视频。 【参考方案1】:

https://developer.apple.com/library/ios/documentation/Photos/Reference/PHAsset_Class/

var pixelWidth: Int get

var pixelHeight: Int get

资产的图像或视频数据的宽度和高度(以像素为单位)。 (只读)

如果资产的内容有 已编辑,此属性描述当前版本的大小 的资产。可用性 iOS(8.0 及更高版本)

if asset!.pixelHeight > asset!.pixelWidth 
 // will be portrait video or Image

适用于 iOS 8.0 及更高版本。

【讨论】:

这并不能告诉你它是左还是右。

以上是关于从 PHAsset 获取视频时如何检测视频是不是为横向/纵向?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 PHAsset 获取视频的缩略图?

如何获取视频 PHAsset 磁盘文件大小?

我怎样才能给 PHAsset 一个标志?

尝试从 PHAsset 获取 AVAssetExportSession 的输出时得到空结果

应用程序在 swift 中为所有视频 PHAsset 播放相同的视频

如何使用 fetchAssetsWithALAssetURLs 获取 PHAsset