# AndroidRecordMp4
**Repository Path**: mayflower666/AndroidRecordMp4
## Basic Information
- **Project Name**: AndroidRecordMp4
- **Description**: Recording MP4 & Capturing JPEG by using MediaCodec API. // 本地录制Mp4,图片抓拍jpg,时间水印
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2023-11-01
- **Last Updated**: 2023-11-01
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 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);
}
});
```
最后,不要忘记添加权限哈
csdn博文地址:http://blog.csdn.net/andrexpert/article/details/72523408