gpt4 book ai didi

ios - 解码 H264 : VTDecompressionSessionCreate fails with error code -12910 (kVTVideoDecoderUnsupportedDataFormatErr)

转载 作者:搜寻专家 更新时间:2023-11-01 07:21:27 24 4
gpt4 key购买 nike

在我的 iPad 上运行代码时,我收到错误 -12910 (kVTVideoDecoderUnsupportedDataFormatErr),但不是在 sim 上。我正在使用 Avios (https://github.com/tidwall/Avios),这是相关部分:

private func initVideoSession() throws {
formatDescription = nil
var _formatDescription : CMFormatDescription?
let parameterSetPointers : [UnsafePointer<UInt8>] = [ pps!.buffer.baseAddress, sps!.buffer.baseAddress ]
let parameterSetSizes : [Int] = [ pps!.buffer.count, sps!.buffer.count ]
var status = CMVideoFormatDescriptionCreateFromH264ParameterSets(kCFAllocatorDefault, 2, parameterSetPointers, parameterSetSizes, 4, &_formatDescription);
if status != noErr {
throw H264Error.CMVideoFormatDescriptionCreateFromH264ParameterSets(status)
}
formatDescription = _formatDescription!

if videoSession != nil {
VTDecompressionSessionInvalidate(videoSession)
videoSession = nil
}
var videoSessionM : VTDecompressionSession?

let decoderParameters = NSMutableDictionary()
let destinationPixelBufferAttributes = NSMutableDictionary()
destinationPixelBufferAttributes.setValue(NSNumber(unsignedInt: kCVPixelFormatType_32BGRA), forKey: kCVPixelBufferPixelFormatTypeKey as String)

var outputCallback = VTDecompressionOutputCallbackRecord()
outputCallback.decompressionOutputCallback = callback
outputCallback.decompressionOutputRefCon = UnsafeMutablePointer<Void>(unsafeAddressOf(self))

status = VTDecompressionSessionCreate(nil, formatDescription, decoderParameters, destinationPixelBufferAttributes, &outputCallback, &videoSessionM)
if status != noErr {
throw H264Error.VTDecompressionSessionCreate(status)
}
self.videoSession = videoSessionM;
}

这里的ppssps是包含PPS和SPS帧的缓冲区。

如上所述,奇怪的是它在模拟器上完全可以正常工作,但在实际设备上却不行。两者都在 iOS 9.3 上,我正在模拟与设备相同的硬​​件。

什么会导致这个错误?

而且,更一般地说,我可以在哪里找到 VideoToolbox 的 API 引用和错误文档?在 Apple 的网站上确实找不到任何相关内容。

最佳答案

答案原来是流分辨率大于 1920x1080,这是 iPad 支持的最大分辨率。这与支持超出该分辨率的模拟器有明显区别(也许它只是使用 Mac VideoToolbox 库而不是模拟 iOS 库)。

将流减少到少于 1080p 的像素解决了这个问题。

这是一位 Apple 员工的回复,为我指明了正确的方向:https://forums.developer.apple.com/thread/11637

至于正确的 VideoToolbox 引用 - 仍然没有任何有值(value)的东西存在,这是一个巨大的缺点。人们想知道教程编写者最初是如何获得他们的信息的。

编辑:iOS 10 现在似乎支持大于 1080p 的流。

关于ios - 解码 H264 : VTDecompressionSessionCreate fails with error code -12910 (kVTVideoDecoderUnsupportedDataFormatErr),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38749076/

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