如何更改相机预览回调缓冲区的方向?

Jon*_*han 9 android android-camera

这是一个常见问题的变体,但我没有看到这种情况,所以我会把它扔出去.

我有一个onPreviewFrame回调设置.这会得到一个包含NV21数据的byte [].我们对它进行h.264编码并将其作为视频流发送出去.另一方面,我们看到视频偏向90度或270度,具体取决于手机.

那么问题是,如何旋转数据,而不仅仅是预览图像?Camera.Parameters.setRotation仅影响拍照,而不影响视频.Camera.setDisplayOrientation明确表示它只影响显示预览,而不影响帧字节:

这不会影响onPreviewFrame(byte [],Camera),JPEG图片或录制视频中传递的字节数组的顺序.

那么在任何API级别都有一种方法可以改变字节数组的方向吗?如果不这样做,你甚至可以旋转这种格式的NV21(YVU)格式,还是首先需要RGB格式?

Jon*_*han 1

事实证明,在发送之前,您确实需要自己旋转每一帧。我们最终使用了 libyuv,它有一个非常方便的函数,可以旋转和转换它 - libyuv::ConvertToI420

https://code.google.com/p/libyuv/