Android 读取视频时,ImageReader获取了错误的数据?
我正在编写一个应用程序来抓取视频中的每一帧,这样我就可以进行一些简历处理。 根据Android的API文档的描述,我应该将Mediaplayer的表面设置为ImageReader.getSurface()。这样我就可以在ImageAvailableListener上获取回调上的每一个视频帧。它在一些设备和一些视频上真正起作用。 然而,在我的Nexus5(API24-25)上,当图像可用时,我得到了几乎绿色的像素。 我检查了图像Yuv平面中的字节[],发现我从视频中读取的字节一定是出了什么问题!大多数字节是Y=0,UV=0,这与一个充满绿色像素的奇怪成像仪有关。 我已经确定视频是YUV420sp。有人能帮我吗?或者为我推荐另一种抓取帧的方法吗?(我尝试了javacv,但是抓取器太慢了)我解决了我的问题!! 在使用图像时,我们应该使用getCropRect来获取图像的有效区域。Android 读取视频时,ImageReader获取了错误的数据?,android,video,Android,Video,我正在编写一个应用程序来抓取视频中的每一帧,这样我就可以进行一些简历处理。 根据Android的API文档的描述,我应该将Mediaplayer的表面设置为ImageReader.getSurface()。这样我就可以在ImageAvailableListener上获取回调上的每一个视频帧。它在一些设备和一些视频上真正起作用。 然而,在我的Nexus5(API24-25)上,当图像可用时,我得到了几乎绿色的像素。 我检查了图像Yuv平面中的字节[],发现我从视频中读取的字节一定是出了什么问题!大
例如,我得到image.width==1088当我解码1920*1080帧时,我应该使用image.getCropImage()来获得图像的正确大小,即19201080只是想知道,您在这里使用了什么视频格式?您将ImageReader格式设置为什么?@hiro您能分享一个解决方案吗?