首页 > 编程 > Java > 正文

java中初始化MediaRecorder的实现方法

2019-11-26 11:05:22
字体:
来源:转载
供稿:网友

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();      }    } 

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表