我正在用 AVAssetWriter 和 AVAssetWriterInputPixelBufferAdaptor 编写电影文件。
用于构建 CVPixelBuffer 的 CGImage 看起来很正常(如屏幕上显示的那样),输出影片显示压缩到帧的上半部分的输入图像。所有宽度、高度和 bytes_per_row 都是相同的(对于 CGImage、AVAssetWriter 设置和 CVPixelBuffer 设置)。
什么可能导致这种问题?
我正在用 AVAssetWriter 和 AVAssetWriterInputPixelBufferAdaptor 编写电影文件。
用于构建 CVPixelBuffer 的 CGImage 看起来很正常(如屏幕上显示的那样),输出影片显示压缩到帧的上半部分的输入图像。所有宽度、高度和 bytes_per_row 都是相同的(对于 CGImage、AVAssetWriter 设置和 CVPixelBuffer 设置)。
什么可能导致这种问题?
问题来自这样一个事实,即当您向 AVAssetWriterInputPixelBufferAdaptor 提供设置以用于配置 CVPixelBufferPool 以生成 CVPixelBuffers 时,CVPixelBufferPool 显然将设置用作请求而不是实际设置。你得到的 CVPixelBuffer 可能有不同的配置。这可能是苹果代码中的一个错误,我不确定。
在任何情况下,您都可以使用 CVPixelBufferGetBytesPerRow(CVPixelBuffer) 读取每行的实际字节数,并相应地调整您的代码。为我工作!