软件编程
位置:首页>> 软件编程>> java编程>> java中初始化MediaRecorder的实现方法

java中初始化MediaRecorder的实现方法

作者:csguo007  发布时间:2023-11-29 03:54:52 

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

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

来源:http://blog.csdn.net/zhyooo123/article/details/6750061

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com