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

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

02-02 17:49
查看更多