java中初始化MediaRecorder的实现方法

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

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

标签:java,MediaRecorder
0
投稿

猜你喜欢

  • Spring Boot Reactor 整合 Resilience4j详析

    2021-08-08 10:30:02
  • SpringBoot实现项目健康检查与监控

    2023-10-28 19:14:25
  • AndroidStudio替换项目图标ic_launcher操作

    2023-03-20 09:48:07
  • Android自定义viewGroup实现点击动画效果

    2022-09-01 00:27:07
  • Java中的stream流的概念解析及实际运用总结

    2022-06-10 23:19:10
  • java网络编程基础知识介绍

    2023-01-10 20:37:44
  • java Matcher匹配头尾截取替换字符串的案例

    2023-01-30 11:44:48
  • Flutter实现顶部导航栏功能

    2023-03-10 17:13:48
  • java实现大文件分割与合并的实例代码

    2023-11-11 04:31:21
  • C#版Tesseract库的使用技巧

    2023-01-24 20:07:53
  • Java 中的抽象介绍

    2023-03-27 06:10:20
  • Spring gateway + Oauth2实现单点登录及详细配置

    2022-12-19 00:16:49
  • c#之利用API函数实现动画窗体的方法详解

    2022-12-07 04:43:24
  • Java毕业设计实战之生活旅行分享平台的实现

    2022-02-01 02:42:18
  • c++虚函数与虚函数表原理

    2023-12-09 07:22:45
  • Android读写文件工具类详解

    2021-10-08 18:08:12
  • 一篇看懂Java中的Unsafe类

    2022-02-13 04:02:38
  • 简单实现Android弹出菜单效果

    2023-01-11 18:58:46
  • IntelliJ IDEA 安装目录的核心文件的功能及用法

    2023-02-02 10:46:59
  • Android嵌套RecyclerView左右滑动替代自定义view

    2023-03-27 14:51:17
  • asp之家 软件编程 m.aspxhome.com