我的目标是在录制视频时访问每一帧
我想要的是在录制时拍摄每一帧,并且帧应该与结果视频的每一帧完全相等,而不是预览帧。
当然,我可以在录制结束后使用OpenCV或FFMPEG等工具访问每一帧,但现在我需要在录制时实时获取它们。
Bitmap
、Image
、ByteBuffer
、byte[]
或作为文件,如果我可以访问每个数据,则任何类型都可以。
我搜索了一些教程,找到了这个系列,尤其是这个视频,但这并不是我所需要的。该教程包括如何在录制视频时拍照。
有人能帮我吗?
不幸的是,通常情况下,精确的视频帧只发送到视频编码器。当然,您可以在每个编码帧从MediaCodec输出后对视频进行解码,但这有点昂贵。
或者,您可以尝试使用带有使用标志的ImageReader,这只在最近的Android版本上可行,并同时使用usage_CPU_READ_OFTEN和usage_VIDEO_ENCODE使用标志,并格式化YUV_420_888。这应该尽可能接近"正常"的视频录制输出,但不幸的是,它可能并不完全相同。