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,但我不需要保存视频-我只需要那些高分辨率的视频帧…

似乎你唯一能做的就是从MediaRecoder数据解码帧。您可以使用ffmpeg来解码来自LocalSocket的记录器数据。

希望以下开源项目对您有所帮助:

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

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

你应该看看OpenCV库。它的方法允许你接收完整帧

我有一个印象:视频预览尺寸小,而且速度慢,比设定的视频录制帧速率慢。

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

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

你可以使用这个库:

https://github.com/natario1/CameraView

这个库有addFrameProcessor监听器,在process函数中有Frame参数。

如果在处理帧时需要录制视频,则需要使用CameraView的from takeVideoSnapshot功能。takeVideo停止帧处理,直到完成视频录制的最新版本,我测试2.6.4。

相关内容

  • 没有找到相关文章

最新更新