gpt4 book ai didi

android - 如何在后台使用 Android 相机?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:13:06 28 4
gpt4 key购买 nike

我目前正在开发一个需要在后台录制视频并对其进行处理的应用。

(需要在后台实时获取相机预览数据,并对预览数据进行图像处理)

然而,要实现它,我需要使用 Camera 和 OpenCV 作为服务,而且似乎无法在不使用任何预览的情况下在 OpenCV 和 Android.Hardware.Camera 中使用 JavaCameraView。

这是我的问题。

  1. 我听说 OpenCV 中的 NativeCamera 可以用于此目的。可能吗? (可能有例子?)

  2. 有什么方法可以让我使用 JavaCameraView(或类似的东西)来达到这个目的吗?我目前使用的是 Galaxy S4。

  3. 如果 android 不支持这种方法,是否有任何可能的解决方法?(在没有任何表面 View 的情况下使用相机预览,或在没有使用预览的情况下处理相机数据)

  4. (可选)为什么android不支持这样的操作?这很烦人!

感谢您回答问题。

最佳答案

可以通过以下步骤..

创建一个将在某些事件上启动后台服务的 Activity ,或者您也可以使用警报管理器根据您的要求启动和停止服务。

请参阅以下对您有帮助的代码。

public boolean starMediaRecording(){
Camera.Parameters params = mServiceCamera.getParameters();
mServiceCamera.setParameters(params);
Camera.Parameters p = mServiceCamera.getParameters();

final List<Size> listSize = p.getSupportedPreviewSizes();
Size mPreviewSize = listSize.get(2);
p.setPreviewSize(mPreviewSize.width, mPreviewSize.height);
p.setPreviewFormat(PixelFormat.YCbCr_420_SP);
mServiceCamera.setParameters(p);

try {
mServiceCamera.setPreviewDisplay(mSurfaceHolder);
mServiceCamera.startPreview();
}
catch (IOException e) {
Log.e(TAG, e.getMessage());
e.printStackTrace();
}

mServiceCamera.unlock();

mMediaRecorder = new MediaRecorder();
mMediaRecorder.setCamera(mServiceCamera);
mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT);
mMediaRecorder.setOutputFile("/sdcard/filenamevideo.mp4");
mMediaRecorder.setVideoFrameRate(30);
mMediaRecorder.setVideoSize(mPreviewSize.width, mPreviewSize.height);
mMediaRecorder.setPreviewDisplay(mSurfaceHolder.getSurface());

mMediaRecorder.prepare();
mMediaRecorder.start();

mRecordingStatus = true;

return true;

}

public void stopMediaRecorder() {
mServiceCamera.reconnect();

mMediaRecorder.stop();
mMediaRecorder.reset();

mServiceCamera.stopPreview();
mMediaRecorder.release();

mServiceCamera.release();
mServiceCamera = null;
}
}

关于android - 如何在后台使用 Android 相机?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19283529/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com