我尝试使用 CVPixelBufferCreateWithPlanarBytes。我没有看到 CVPixelBufferCreateWithPlanarBytes、VTCompressionSessionEncodeFrame 返回任何错误。但是输出回调给出了一个错误 kVTParameterErr。所有 API 的所有参数似乎都很好。注意:同一段代码在 mac 上运行良好。
问问题
1176 次
1 回答
1
有同样的问题。使用 CVPixelBufferCreateWithPlanarBytes 创建的缓冲区生成 -12902 错误,使用 CVPixelBufferCreate 创建的缓冲区正常编码。
所以代替 CVPixelBufferCreateWithPlanarBytes 使用:
// Create buffer
CVPixelBufferCreate(..., &buffer);
// Lock base address (necessary to get and use plane pointers
CVPixelBufferLockBaseAddress(buffer, 0);
// Get plane count
size_t count = CVPixelDataGetPlaneCount(buffer);
// Repeat for all planes
for (size_t plane = 0; plane < count; plane++) {
void* ptr = CVPixelBufferGetBaseAddressOfPlane(buffer, plane);
//write your plane data
}
// Unlock base address
CVPixelBufferUnlockBaseAddress(buffer, 0);
于 2016-02-22T03:52:02.973 回答