Android视频帧处理

我正在开发应用程序,在相机帧上进行一些实时图像处理 . 为此,我使用预览回调的方法 onPreviewFrame .
这适用于支持分辨率至少为640x480或更大的预览帧的相机 . 但是当相机不支持如此大的相机预览分辨率时,应用程序被编程为拒绝处理这样的帧 . 现在,我遇到的问题是像 Sony Xperia Go这样的手机 . 这是一个非常好的设备,可以录制分辨率高达1280x720的视频,但遗憾的是最大相机预览尺寸为480x320,这对我的需求来说太小了 .

我想知道的是如何获得这些 larger camera frames (最高1280x720或更高)?显然它必须是可能的,因为相机应用程序能够以该分辨率录制视频 - 因此该应用程序必须能够以某种方式访问那些较大的帧 . 如何从我的应用程序中执行相同的操作?

应用程序必须支持Android 2.1及更高版本,但即使我找到针对Android 4.0或更新版本的问题的解决方案,我也会非常高兴 .

这个问题类似于 http://stackoverflow.com/questions/8839109/processing-android-video-frame-by-frame-while-recording ,但我不需要保存视频 - 我只需要那些高分辨率的视频帧......

非常感谢你提前!

回答(3)

2 years ago

看来你唯一能做的就是从MediaRecoder数据中解码帧 . 您可以使用ffmpeg解码LocalSocket中的recoreder数据 .

希望以下开源项目可能有所帮助:

ipcamera-for-android:https://code.google.com/p/ipcamera-for-android/

spydroid-ipcamera:https://code.google.com/p/spydroid-ipcamera/

2 years ago

你应该看一下OpenCV库 . 它具有允许您接收完整帧的方法 .

2 years ago

我有一个印象:视频预览大小很小,并且比设置的视频录制帧速率慢,慢 .

我曾经试图寻找解决方案 . 似乎更好的方法是从录像机获取视频流,然后直接处理视频流中的数据 .

你可以在Android ip-camera上找到一些例子 .