Code Monkey home page Code Monkey logo

androidrecordmp4's Introduction

AndroidRecordMp4

本地录制Mp4、抓拍jpg图片

  • 支持叠加中英文、时间水印;
  • 支持前后置摄像头切换、分辨率切换;
  • 支持前后置摄像头视频拍摄、JPG格式图片抓取
  • 支持运动状态下相机自动对焦,同时支持手动对焦
  • 支持自适应拍摄方向

1. 添加依赖  

(1) 在工程build.gradle中添加

allprojects {
		repositories {
			...
			maven { url 'https://jitpack.io' }
		}
	}

(2) 在module的gradle中添加

dependencies {
    compile 'com.github.jiangdongguo:AndroidRecordMp4:v1.0.2'
}

2. 使用方法

(1) 初始化引擎/释放资源

 RecordMp4 mRecMp4 = RecordMp4.getRecordMp4Instance();
 mRecMp4.init(this);  // 上下文
 // 水印类型,包含三种:时间,文字,两者均包含
 mRecMp4.setOverlayType(RecordMp4.OverlayType.BOTH);
 mRecMp4.setOverlayContent("我爱你,**!");

(2) 配置编码参数

  EncoderParams mParams = new EncoderParams();
  mParams.setVideoPath(RecordMp4.ROOT_PATH+ File.separator + System.currentTimeMillis() + ".mp4");    // 视频文件路径
  mParams.setFrameWidth(CameraManager.PREVIEW_WIDTH);             // 分辨率
  mParams.setFrameHeight(CameraManager.PREVIEW_HEIGHT);
  mParams.setBitRateQuality(H264EncodeConsumer.Quality.MIDDLE);   // 视频编码码率
  mParams.setFrameRateDegree(H264EncodeConsumer.FrameRate._30fps);// 视频编码帧率
  mParams.setAudioBitrate(AACEncodeConsumer.DEFAULT_BIT_RATE);        // 音频比特率
  mParams.setAudioSampleRate(AACEncodeConsumer.DEFAULT_SAMPLE_RATE);  // 音频采样率
  mParams.setAudioChannelConfig(AACEncodeConsumer.CHANNEL_IN_MONO);// 单声道
  mParams.setAudioChannelCount(AACEncodeConsumer.CHANNEL_COUNT_MONO);       // 单声道通道数量
  mParams.setAudioFormat(AACEncodeConsumer.ENCODING_PCM_16BIT);       // 采样精度为16位
  mParams.setAudioSouce(AACEncodeConsumer.SOURCE_MIC);                // 音频源为MIC
  mRecMp4.setEncodeParams(mParams);

(3) 开始 /停止录制

 mRecMp4.startRecord();
 mRecMp4.stopRecord();

(4) Camera渲染

public class MainActivity extends Activity implements SurfaceHolder.Callback{
    @Override
    public void surfaceCreated(SurfaceHolder surfaceHolder) {
        if(mRecMp4 != null){
            mRecMp4.startCamera(surfaceHolder);
        }
    }

    @Override
    public void surfaceChanged(SurfaceHolder surfaceHolder, int i, int i1, int i2) {

    }

    @Override
    public void surfaceDestroyed(SurfaceHolder surfaceHolder) {
        if(mRecMp4 != null){
            mRecMp4.stopCamera();
        }
    }

(5) 摄像头控制

// 对焦
 mRecMp4.enableFocus(new CameraManager.OnCameraFocusResult() {
         @Override
         public void onFocusResult(boolean result) {
                   if(result){
                        showMsg("对焦成功");
                    }
               }
            });
  // 切换摄像头
  mRecMp4.switchCamera();
  
  // 修改默认分辨率
  mRecMp4.setPreviewSize(1280,720); 
  
  // 切换分辨率
  mRecMp4.setPreviewSize(1280,720);
  mRecMp4.restartCamera();
```  

(6) JPG图片抓拍
  mRecMp4.capturePicture(picPath, new SaveYuvImageTask.OnSaveYuvResultListener() {
      @Override
      public void onSaveResult(boolean result, String savePath) {
              Log.i("MainActivity","抓拍结果:"+result+"保存路径:"+savePath);
           }
       }); 

最后,不要忘记添加权限哈
 
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 


csdn博文地址:http://blog.csdn.net/andrexpert/article/details/72523408

androidrecordmp4's People

Contributors

jiangdongguo avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.