在
android中如何在媒体记录器启动之前显示预览表面.
我的应用程序具有视频录制功能,当我导航到视频录制片段时,它显示黑屏,当我开始使用开始录制相机预览录制时,显示和录制开始.
我的应用程序具有视频录制功能,当我导航到视频录制片段时,它显示黑屏,当我开始使用开始录制相机预览录制时,显示和录制开始.
如何在录制前开始预览.
我添加了我在onCreateView()片段中使用的代码 –
surfaceHolder = mySurfaceView.getHolder(); camera = Camera.open(); if(camera!=null){ camera.setdisplayOrientation(90); Camera.Parameters param; param = camera.getParameters(); param.setPreviewFrameRate(20); param.setPreviewSize(176,144); camera.setParameters(param); camera.setPreviewdisplay(surfaceHolder); } mediaRecorder = new MediaRecorder(); camera.unlock(); mediaRecorder.setCamera(camera); mediaRecorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT); mediaRecorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT); CamcorderProfile camcorderProfile_HQ = CamcorderProfile .get(CamcorderProfile.QUALITY_HIGH); mediaRecorder.setProfile(camcorderProfile_HQ); String filePath = getoutputMediaFile(MEDIA_TYPE_VIDEO).getPath(); fileUri = getoutputMediaFileUri(MEDIA_TYPE_VIDEO); mediaRecorder.setoutputFile(filePath);
以及我在开始按钮点击时使用的代码 –
mediaRecorder.setPreviewdisplay(surfaceHolder.getSurface()); mediaRecorder.prepare(); mediaRecorder.start();
所以我可以使用上面的代码重新编码视频,但无法在录制开始前显示预览.
请帮助我在我失踪的地方.因为在重新编码视频之前会显示黑屏.
提前致谢.
解决方法
public void surfaceCreated(SurfaceHolder holder) { if (mCamera != null) { Parameters params = mCamera.getParameters(); mCamera.setParameters(params); try { //mCamera.setdisplayOrientation(90); mCamera.setPreviewdisplay(holder); } catch (IOException e) { e.printstacktrace(); } mCamera.startPreview(); } }