首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AVURLAsset获取视频大小

AVURLAsset获取视频大小
EN

Stack Overflow用户
提问于 2012-05-03 22:46:08
回答 7查看 39.6K关注 0票数 28

这是相当令人沮丧的。我正在尝试获取AVURLasset的大小,但尽量避免使用naturalSize,因为Xcode告诉我,在iOS5中这是不推荐使用的。

但是:替代方案是什么?

我找不到任何关于如何获得视频尺寸的线索,而不使用«naturalsize»...

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2012-05-04 00:17:37

我刚刚在线查看了文档,AVAsset对象不推荐使用naturalSize方法。但是,应该始终有一个引用AVAsset的AVAssetTrack,并且AVAssetTrack有一个您可以调用的naturalSize方法。

naturalSize

轨道引用的媒体数据的自然维度。(只读)

@property(非原子,只读) CGSize naturalSize

Availability

在iOS 4.0及更高版本中可用。在AVAssetTrack.h中声明

途径:AVAssetTrack Reference for iOS

票数 34
EN

Stack Overflow用户

发布于 2015-12-19 06:36:01

Swift 3中的分辨率:

代码语言:javascript
复制
func resolutionSizeForLocalVideo(url:NSURL) -> CGSize? {
    guard let track = AVAsset(URL: url).tracksWithMediaType(AVMediaTypeVideo).first else { return nil }
    let size = CGSizeApplyAffineTransform(track.naturalSize, track.preferredTransform)
    return CGSize(width: fabs(size.width), height: fabs(size.height))
}

对于Swift 4:

代码语言:javascript
复制
func resolutionSizeForLocalVideo(url:NSURL) -> CGSize? {
    guard let track = AVAsset(url: url as URL).tracks(withMediaType: AVMediaType.video).first else { return nil }
    let size = track.naturalSize.applying(track.preferredTransform)
    return CGSize(width: fabs(size.width), height: fabs(size.height))
}

没有preferredTransform的解决方案不会为最新设备上的某些视频返回正确的值!

票数 45
EN

Stack Overflow用户

发布于 2013-08-20 08:16:01

deprecation warning on the official documentation建议,“在适当的情况下,使用资产视频轨道的naturalSizepreferredTransform (请参阅tracksWithMediaType:)。”

我将我的代码从:

代码语言:javascript
复制
CGSize size = [movieAsset naturalSize];

代码语言:javascript
复制
CGSize size = [[[movieAsset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0] naturalSize];

它现在不那么漂亮了,也不太安全了,但当他们放弃这个方法时,它不会崩溃。

票数 26
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10433774

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档