java中初始化MediaRecorder
实现代码:
private boolean initializeVideo() { Log.v(TAG,"initializeVideo"); if (mSurfaceHolder == null) { Log.v(TAG,"SurfaceHolder is null"); return false; } mMediaRecorderRecording = true; if (mMediaRecorder == null) mMediaRecorder = new MediaRecorder(); else mMediaRecorder.reset(); if (mCamera != null) { if (Integer.parseInt(Build.VERSION.SDK) >= 8) VideoCameraNew2.reconnect(mCamera); mCamera.release(); mCamera = null; } if (useFront && Integer.parseInt(Build.VERSION.SDK) >= 5) { if (isAvailableSprintFFC) { try { Method method = Class.forName("android.hardware.HtcFrontFacingCamera").getDeclaredMethod("getCamera",null); mCamera = (Camera) method.invoke(null,null); } catch (Exception ex) { Log.d(TAG,ex.toString()); } } else { mCamera = Camera.open(); Camera.Parameters parameters = mCamera.getParameters(); parameters.set("camera-id",2); mCamera.setParameters(parameters); } VideoCameraNew.unlock(mCamera); mMediaRecorder.setCamera(mCamera); mVideoPreview.setonClickListener(this); } mVideoPreview.setonLongClickListener(this); mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); mMediaRecorder.setoutputFormat(MediaRecorder.OutputFormat.THREE_GPP); mMediaRecorder.setoutputFile(sender.getFileDescriptor()); mMediaRecorder.setVideoFrameRate(20); if (videoQualityHigh) { mMediaRecorder.setVideoSize(352,288); } else { mMediaRecorder.setVideoSize(176,144); } mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263); mMediaRecorder.setPreviewdisplay(mSurfaceHolder.getSurface()); try { mMediaRecorder.prepare(); mMediaRecorder.setonErrorListener(this); mMediaRecorder.start(); } catch (IOException exception) { releaseMediaRecorder(); finish(); return false; } return true; }
private boolean initializeVideo() { Log.v(TAG,"initializeVideo"); if (mSurfaceHolder == null) { Log.v(TAG,"SurfaceHolder is null"); return false; } mMediaRecorderRecording = true; if (mMediaRecorder == null) mMediaRecorder = new MediaRecorder(); else mMediaRecorder.reset(); if (mCamera != null) { if (Integer.parseInt(Build.VERSION.SDK) >= 8) VideoCameraNew2.reconnect(mCamera); mCamera.release(); mCamera = null; } if (useFront && Integer.parseInt(Build.VERSION.SDK) >= 5) { if (isAvailableSprintFFC) { try { Method method = Class.forName("android.hardware.HtcFrontFacingCamera").getDeclaredMethod("getCamera",null); mCamera = (Camera) method.invoke(null,null); } catch (Exception ex) { Log.d(TAG,ex.toString()); } } else { mCamera = Camera.open(); Camera.Parameters parameters = mCamera.getParameters(); parameters.set("camera-id",2); mCamera.setParameters(parameters); } VideoCameraNew.unlock(mCamera); mMediaRecorder.setCamera(mCamera); mVideoPreview.setonClickListener(this); } mVideoPreview.setonLongClickListener(this); mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); mMediaRecorder.setoutputFormat(MediaRecorder.OutputFormat.THREE_GPP); mMediaRecorder.setoutputFile(sender.getFileDescriptor()); mMediaRecorder.setVideoFrameRate(20); if (videoQualityHigh) { mMediaRecorder.setVideoSize(352,288); } else { mMediaRecorder.setVideoSize(176,144); } mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263); mMediaRecorder.setPreviewdisplay(mSurfaceHolder.getSurface()); try { mMediaRecorder.prepare(); mMediaRecorder.setonErrorListener(this); mMediaRecorder.start(); } catch (IOException exception) { releaseMediaRecorder(); finish(); return false; } return true; }
private void releaseMediaRecorder() { Log.v(TAG,"Releasing media recorder."); if (mMediaRecorder != null) { mMediaRecorder.reset(); if (mCamera != null) { if (Integer.parseInt(Build.VERSION.SDK) >= 8) VideoCameraNew2.reconnect(mCamera); mCamera.release(); mCamera = null; } mMediaRecorder.release(); mMediaRecorder = null; } } public void onError(MediaRecorder mr,int what,int extra) { if (what == MediaRecorder.MEDIA_RECORDER_ERROR_UNKNowN) { finish(); } }
private void releaseMediaRecorder() { Log.v(TAG,"Releasing media recorder."); if (mMediaRecorder != null) { mMediaRecorder.reset(); if (mCamera != null) { if (Integer.parseInt(Build.VERSION.SDK) >= 8) VideoCameraNew2.reconnect(mCamera); mCamera.release(); mCamera = null; } mMediaRecorder.release(); mMediaRecorder = null; } } public void onError(MediaRecorder mr,int extra) { if (what == MediaRecorder.MEDIA_RECORDER_ERROR_UNKNowN) { finish(); } }
private void stopVideoRecording() { Log.v(TAG,"stopVideoRecording"); if (mMediaRecorderRecording || mMediaRecorder != null) { Receiver.listener_video = null; t.interrupt(); RtpStreamSender.delay = 0; if (mMediaRecorderRecording && mMediaRecorder != null) { try { mMediaRecorder.setonErrorListener(null); mMediaRecorder.setonInfoListener(null); mMediaRecorder.stop(); } catch (RuntimeException e) { Log.e(TAG,"stop fail: " + e.getMessage()); } mMediaRecorderRecording = false; } releaseMediaRecorder(); } }
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!