一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

Android自定义录制视频功能

时间:2017-04-28 编辑:简简单单 来源:一聚教程网

Android录制视频MediaRecorder+SurfaceView的使用方法,供大家参考,具体内容如下

先看效果图:

<1>将视频动画显示到SurfaceView控件上
<2>使用MediaRecorder类进行视频的录制

常用的方法:

 

 代码如下 复制代码

mediaRecorder.reset();

mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);//从照相机采集视频

mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);

mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);

mediaRecorder.setVideoFrameRate(3);//每秒3帧

mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263);//设置视频编码方式

mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

File videoFile =newFile(Environment.getExternalStorageDirectory(), System.currentTimeMillis()+".3gp");

mediaRecorder.setOutputFile(videoFile.getAbsolutePath());

mediaRecorder.setPreviewDisplay(surfaceView.getHolder().getSurface());

mediaRecorder.prepare();//预期准备

mediaRecorder.start();//开始刻录

mediaRecorder.stop();//停止刻录

 

下面看代码:

 

 代码如下 复制代码

publicclassMediaRecorderActivityextendsAppCompatActivity {

 

  privateSurfaceView sv_mediarecorder_surface;

  privateMediaRecorder mediaRecorder;

  privatebooleanisStartAndStop=false;

 

  @Override

  protectedvoidonCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {

      getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);

      getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);

    }

    setContentView(R.layout.activity_mediarecorder);

    //获取SurfaceView

    sv_mediarecorder_surface = (SurfaceView) findViewById(R.id.sv_mediarecorder_surface);

    //实例化媒体录制器

    mediaRecorder =newMediaRecorder();

 

  }

  //视频录制与暂停的方法

  publicvoidstartMediaCorder(View view){

    Button button= (Button) view;

    if(!isStartAndStop) {

      if(mediaRecorder==null){

        //实例化媒体录制器

        mediaRecorder =newMediaRecorder();

      }

      mediaRecorder.reset();

      mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);//从照相机采集视频

      mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);//设置麦克风

      //设置保存的格式

      mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);

      //设置编码格式

      mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263);

      mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

      mediaRecorder.setVideoFrameRate(3);

      //获取根路径

      String sdPath= Environment.getExternalStorageDirectory().getAbsolutePath();

      //设置保存的路径

      mediaRecorder.setOutputFile(sdPath+"/taoge"+System.currentTimeMillis()+".mp4");

      //将画面展示到SurfaceView

      mediaRecorder.setPreviewDisplay(sv_mediarecorder_surface.getHolder().getSurface());

      //准备

      try{

        mediaRecorder.prepare();

        mediaRecorder.start();

 

      }catch(IOException e) {

        e.printStackTrace();

      }

      button.setText("结束");

    }else{

 

      // 为其它应用释放摄像头

      mediaRecorder.release();

      mediaRecorder =null;

      //关闭

      button.setText("开始");

    }

    isStartAndStop=!isStartAndStop;

  }

 

 

}

 

热门栏目