我想从javacv
Frame 获取原始数据。
我正在使用FFmpegFrmaeFilter
旋转 Android 相机预览。因此,我将 Frame 从 中提取出来FFmpegFrameFilter
,然后提供转换byte[]
为MediaCodec
.
但是,这样做时,我得到了错误的数据(绿色图片)。我正在从Frame.Image[0].array();
有没有其他方法可以从 Frame 获取原始数据,我可以提供给Mediacodec
.
我想从javacv
Frame 获取原始数据。
我正在使用FFmpegFrmaeFilter
旋转 Android 相机预览。因此,我将 Frame 从 中提取出来FFmpegFrameFilter
,然后提供转换byte[]
为MediaCodec
.
但是,这样做时,我得到了错误的数据(绿色图片)。我正在从Frame.Image[0].array();
有没有其他方法可以从 Frame 获取原始数据,我可以提供给Mediacodec
.
绿色图片很可能意味着您为图像的色度分量传递了零。Android 相机通常会生成 YUV 420 图像,其中您有亮度 (Y) 的宽度*高度数组,后跟 U 和 V,宽度/2*高度/2 各。
FFmpegFrameFilter
理解不同的帧格式,但这也取决于一些从参数中导出输入像素格式的启发式方法。Frame
MediaCodec
可以接收灵活的 YUV 420 格式的帧,但正确设置图像是您的责任。