1

我尝试使用 CVPixelBufferCreateWithPlanarBytes。我没有看到 CVPixelBufferCreateWithPlanarBytes、VTCompressionSessionEncodeFrame 返回任何错误。但是输出回调给出了一个错误 kVTParameterErr。所有 API 的所有参数似乎都很好。注意:同一段代码在 mac 上运行良好。

4

1 回答 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 回答