gpt4 book ai didi

ios - AVPlayerItemVideoOutput copyPixelBuffer 总是返回 1280x720

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:20:36 29 4
gpt4 key购买 nike

我像这样实例化 AVPlayerItemVideoOutput:

let videoOutput = AVPlayerItemVideoOutput(pixelBufferAttributes: [String(kCVPixelBufferPixelFormatTypeKey): NSNumber(value: kCVPixelFormatType_32BGRA)])

然后像这样检索像素缓冲区:

@objc func displayLinkDidRefresh(link: CADisplayLink) {
let itemTime = videoOutput.itemTime(forHostTime: CACurrentMediaTime())

if videoOutput.hasNewPixelBuffer(forItemTime: itemTime) {
if let pixelBuffer = videoOutput.copyPixelBuffer(forItemTime: itemTime, itemTimeForDisplay: nil) {

}
}
}

但由于某些原因 CVPixelBufferGetHeight(pixelBuffer) 或宽度。当 iPhone 的相机(横向或纵向)始终高度 = 1280 宽度 = 720 时拍摄视频时始终返回 1280x720。即使视频是 4k。如果我从 Instagram 加载方形视频或从互联网下载的任何其他视频(不是直接使用相机应用程序创建的),当分辨率小于 720p 时,宽度和高度打印正确。但是不同的分辨率,例如。一个 1008x1792 将抛出 CVPixelBufferGetHeight(pixelBuffer) = 1280

用相机拍摄的视频......它总是会抛出较低的分辨率。我尝试了 4k 和 1080 设置(您可以在 iOS 设置 > 相机中更改)。仍然..即使在 1080,我得到 1280x720 像素缓冲区。

最佳答案

我发现我使用的 UIPickerController 被设置为默认将所选视频从库中转码为 Medium 设置。在本例中为 1280x720

我最终更改了选择器的这个属性

picker.videoQuality = .typeHigh 
picker.videoExportPreset = AVAssetExportPresetHighestQuality

虽然实际进行更改的属性是 videoExportPreset 另一个我不知道它的作用,即使文档指定它用于录制视频 你选择一个视频。

关于ios - AVPlayerItemVideoOutput copyPixelBuffer 总是返回 1280x720,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53716000/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com