Java 如何在Camera2 API android中实现录像机?
如何在Camera2 API android中实现录像机?代码将非常有用。Java 如何在Camera2 API android中实现录像机?,java,android,android-camera2,Java,Android,Android Camera2,如何在Camera2 API android中实现录像机?代码将非常有用。public void startRecordingVideo(){ public void startRecordingVideo() { if (null == mCameraDevice || !mTextureView.isAvailable() || null == mPreviewSize) { return; } try { closePreviewSession(); setUpMediaRec
public void startRecordingVideo(){
public void startRecordingVideo() {
if (null == mCameraDevice || !mTextureView.isAvailable() || null == mPreviewSize) {
return;
}
try {
closePreviewSession();
setUpMediaRecorder();
SurfaceTexture texture = mTextureView.getSurfaceTexture();
assert texture != null;
texture.setDefaultBufferSize(mPreviewSize.getWidth(), mPreviewSize.getHeight());
mPreviewBuilder = mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_RECORD);
List<Surface> surfaces = new ArrayList<>();
/**
* Surface for the camera preview set up
*/
Surface previewSurface = new Surface(texture);
surfaces.add(previewSurface);
mPreviewBuilder.addTarget(previewSurface);
//MediaRecorder setup for surface
Surface recorderSurface = mMediaRecorder.getSurface();
surfaces.add(recorderSurface);
mPreviewBuilder.addTarget(recorderSurface);
// Start a capture session
mCameraDevice.createCaptureSession(surfaces, new CameraCaptureSession.StateCallback() {
@Override
public void onConfigured(@NonNull CameraCaptureSession cameraCaptureSession) {
mPreviewSession = cameraCaptureSession;
updatePreview();
getActivity().runOnUiThread(() -> {
mIsRecordingVideo = true;
// Start recording
mMediaRecorder.start();
});
}
@Override
public void onConfigureFailed(@NonNull CameraCaptureSession cameraCaptureSession) {
Log.e(TAG, "onConfigureFailed: Failed");
}
}, mBackgroundHandler);
} catch (CameraAccessException | IOException e) {
e.printStackTrace();
}
if(null==mCameraDevice | | |!mTextureView.isAvailable()| | null==mPreviewSize){
返回;
}
试一试{
closePreviewSession();
setUpMediaRecorder();
SurfaceTexture纹理=mTextureView.getSurfaceTexture();
断言纹理!=null;
setDefaultBufferSize(mPreviewSize.getWidth(),mPreviewSize.getHeight());
mPreviewBuilder=mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_记录);
列表曲面=新的ArrayList();
/**
*用于相机预览设置的曲面
*/
曲面预览曲面=新曲面(纹理);
曲面。添加(预览曲面);
mPreviewBuilder.addTarget(previewSurface);
//曲面的MediaRecorder设置
曲面记录器Surface=mMediaRecorder.getSurface();
表面。添加(记录器表面);
mPreviewBuilder.addTarget(recorderSurface);
//启动捕获会话
mCameraDevice.createCaptureSession(surfaces,新的CameraCaptureSession.StateCallback(){
@凌驾
未配置公共void(@NonNull CameraCaptureSession CameraCaptureSession){
mPreviewSession=cameraCaptureSession;
updatePreview();
getActivity().runOnUiThread(()->{
误录视频=真;
//开始录音
mMediaRecorder.start();
});
}
@凌驾
已配置公用void onconfig(@NonNull CameraCaptureSession CameraCaptureSession){
Log.e(标记“onConfigureFailed:Failed”);
}
},mBackgroundHandler);
}捕获(CameraAccessException | IOException e){
e、 printStackTrace();
}
}
在这个网站上有一个关于你的问题的例子
公开作废startRecordingVideo(){
if(null==mCameraDevice | | |!mTextureView.isAvailable()| | null==mPreviewSize){
返回;
}
试一试{
closePreviewSession();
setUpMediaRecorder();
SurfaceTexture纹理=mTextureView.getSurfaceTexture();
断言纹理!=null;
setDefaultBufferSize(mPreviewSize.getWidth(),mPreviewSize.getHeight());
mPreviewBuilder=mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_记录);
列表曲面=新的ArrayList();
/**
*用于相机预览设置的曲面
*/
曲面预览曲面=新曲面(纹理);
曲面。添加(预览曲面);
mPreviewBuilder.addTarget(previewSurface);
//曲面的MediaRecorder设置
曲面记录器Surface=mMediaRecorder.getSurface();
表面。添加(记录器表面);
mPreviewBuilder.addTarget(recorderSurface);
//启动捕获会话
mCameraDevice.createCaptureSession(surfaces,新的CameraCaptureSession.StateCallback(){
@凌驾
未配置公共void(@NonNull CameraCaptureSession CameraCaptureSession){
mPreviewSession=cameraCaptureSession;
updatePreview();
getActivity().runOnUiThread(()->{
误录视频=真;
//开始录音
mMediaRecorder.start();
});
}
@凌驾
已配置公用void onconfig(@NonNull CameraCaptureSession CameraCaptureSession){
Log.e(标记“onConfigureFailed:Failed”);
}
},mBackgroundHandler);
}捕获(CameraAccessException | IOException e){
e、 printStackTrace();
}
}
在这个网站上有一个关于你的问题的例子
官方基本视频录制示例如下:
官方基本视频录制示例如下: