17

我正在开发对相机帧进行一些实时图像处理的应用程序。为此,我使用预览回调的方法onPreviewFrame
这适用于支持分辨率至少为 640x480 或更大的预览帧的相机。但是当相机不支持如此大的相机预览分辨率时,应用程序被编程为拒绝处理此类帧。现在,我遇到的问题是像Sony XperiaGo 这样的手机。这是一款非常不错的设备,可以录制分辨率高达 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,但我不需要保存视频 - 我只需要那些高分辨率视频帧......

4

4 回答 4

6

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

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

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

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

于 2014-02-27T07:11:50.540 回答
0

您可能应该看看OpenCV库。它具有允许您接收完整帧的方法。

于 2013-06-01T13:15:07.907 回答
0

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

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

您可以在 Android ip-camera 上找到一些示例。

于 2013-09-22T00:23:18.910 回答
0

你可以使用这个库:

https://github.com/natario1/CameraView

该库具有函数中具有参数addFrameProcessor的侦听器。processFrame

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

于 2020-12-26T12:14:13.493 回答