• 技术文章 >Java >java教程

    如何使用Java初始化MediaRecorder?

    WBOYWBOY2023-04-21 15:07:08转载26

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

    以上就是如何使用Java初始化MediaRecorder?的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:亿速云,如有侵犯,请联系admin@php.cn删除
    专题推荐:Java mediarecorder
    上一篇:如何使用Java实现在微信PC端多开? 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • 怎么利用Java实现带GUI的气泡诗词特效• java怎么实现给接口增加一个参数• java如何求数值型数组中元素的最大值、最小值、平均数、总和等操作• java泛型接口的使用注意事项是什么• Java redis存Map对象类型数据怎么实现
    1/1

    PHP中文网