java中初始化MediaRecorder的实现方法
作者:csguo007
这篇文章主要介绍了java中初始化MediaRecorder的实现方法的相关资料,希望通过本文能帮助到大家,让大家实现这样的功能,需要的朋友可以参考下
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 what, 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(); } }
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!