从 AVAsset 获取错误的视频尺寸

问题描述 投票:0回答:1

出于编辑目的,我想使用 iOS 设备上存储的视频的尺寸。当我使用尺寸为 768x768 的视频时(我以这种方式录制并验证了 iOS 媒体库中的尺寸),我得到的是 480x480。

这是我使用的代码:

func getVideoResolution(url: URL) async throws -> CGSize? {
    guard let track = try await AVURLAsset(url: url).loadTracks(withMediaType: AVMediaType.video).first else { return nil }
    let size = try await track.load(.naturalSize).applying(track.load(.preferredTransform))
    return size
}

我还尝试了一种不同的方法:

func checkVideoDim(videoURL: URL) -> CGSize {
    let videoAsset = AVAsset.init(url: videoURL)

    let generator = AVAssetImageGenerator.init(asset: videoAsset)
    let imageRef: CGImage!

    do {
        try imageRef = generator.copyCGImage(at: CMTime.zero, actualTime: nil)

        let thumbn = UIImage.init(cgImage: imageRef)
        
        return thumbn.size
    } catch let error as NSError {
        print("Failed to check video")
        print(error.localizedDescription)
    }
    
    return CGSize(width: 0, height: 0)
}

这两个函数都给我 480x480,而它们应该给我 768x768。我的应用程序的用户使用完全不同的视频文件告诉我这个问题,所以我认为这不是特定于文件的。 我错过了什么?

ios swift video avasset cgsize
1个回答
-1
投票

我也有同样的问题。

© www.soinside.com 2019 - 2024. All rights reserved.