我目前正在开发一款需要在后台录制视频并进行处理的应用。
(它需要在后台实时获取相机预览数据,并且必须对预览数据进行图像处理)
然而,要实现它,我需要使用Camera和OpenCV作为服务,似乎不可能在OpenCV和Android.Hardware.Camera中使用JavaCameraView而不使用任何预览。
以下是我的问题。
我听说OpenCV中的NativeCamera可以用于此目的。可能吗? (可能有例子?)
是否有任何方法可以使用JavaCameraView(或类似的东西)来实现此目的?我目前使用的是Galaxy S4。
如果android不支持此类方法,是否有任何可能的解决方法?(使用没有任何表面视图的Camera Preview,或者不使用预览处理相机数据)
(可选)为什么android不支持此类操作?这很烦人!
感谢您回答这个问题。
答案 0 :(得分:2)
是可以执行以下步骤..
创建一个活动,该活动将在某个活动中启动您的后台服务,或者您也可以使用报警管理器根据您的要求启动和停止服务。
请参阅以下代码,以帮助您。
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;
}
}
答案 1 :(得分:0)
您可以使用服务在后台启动相机。您可以参考this。希望这会对你有所帮助。