Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 读取视频时,ImageReader获取了错误的数据?_Android_Video - Fatal编程技术网

Android 读取视频时,ImageReader获取了错误的数据?

Android 读取视频时,ImageReader获取了错误的数据?,android,video,Android,Video,我正在编写一个应用程序来抓取视频中的每一帧,这样我就可以进行一些简历处理。 根据Android的API文档的描述,我应该将Mediaplayer的表面设置为ImageReader.getSurface()。这样我就可以在ImageAvailableListener上获取回调上的每一个视频帧。它在一些设备和一些视频上真正起作用。 然而,在我的Nexus5(API24-25)上,当图像可用时,我得到了几乎绿色的像素。 我检查了图像Yuv平面中的字节[],发现我从视频中读取的字节一定是出了什么问题!大

我正在编写一个应用程序来抓取视频中的每一帧,这样我就可以进行一些简历处理。 根据Android的API文档的描述,我应该将Mediaplayer的表面设置为ImageReader.getSurface()。这样我就可以在ImageAvailableListener上获取回调上的每一个视频帧。它在一些设备和一些视频上真正起作用。 然而,在我的Nexus5(API24-25)上,当图像可用时,我得到了几乎绿色的像素。 我检查了图像Yuv平面中的字节[],发现我从视频中读取的字节一定是出了什么问题!大多数字节是Y=0,UV=0,这与一个充满绿色像素的奇怪成像仪有关。 我已经确定视频是YUV420sp。有人能帮我吗?或者为我推荐另一种抓取帧的方法吗?(我尝试了javacv,但是抓取器太慢了)

我解决了我的问题!! 在使用图像时,我们应该使用getCropRect来获取图像的有效区域。
例如,我得到image.width==1088当我解码1920*1080帧时,我应该使用image.getCropImage()来获得图像的正确大小,即19201080

只是想知道,您在这里使用了什么视频格式?您将ImageReader格式设置为什么?@hiro您能分享一个解决方案吗?