项目需要一个能录制十分钟左右自动停止的功能,找SDK发现满足不了需求,没办法就自己写了
基本都写完了,但是在录制的时候图像会拉伸变形,查了好多资料一直也没有一个好办法,现在
我解决了预览变形的,下面不知道怎么弄了,请教那位大神帮助一下
MediaRecorder配置类
if (!isRecorder && mMediaRecorder == null) {
mMediaRecorder = new MediaRecorder();
try {
mMediaRecorder.setCamera(mCamera);
// 设置从摄像头采集图像
mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
// 设置从麦克风采集声音(或来自录像机的声音AudioSource.CAMCORDER)
mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
// 设置视频文件的输出格式
// 必须在设置声音编码格式、图像编码格式之前设置
mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
// mMediaRecorder.setMaxDuration(1000);
// 设置图像编码的格式
mMediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
//mMediaRecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH));
//Use myVideoSize from above
mMediaRecorder.setVideoSize(320, 240);
// 设置声音编码的格式
mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
// mMediaRecorder.setOrientationHint(180);// 输出旋转90度,保持竖屏录制
/*
* mMediaRecorder.setAudioChannels(1);//1单声道 2 多声道
* mMediaRecorder.setAudioSamplingRate(12500);
* //设置录制的音频采样率——频率越高,音质越好
* mMediaRecorder.setAudioEncodingBitRate(16); // 设置录制的音频编码比特率
*/
// mMediaRecorder.setOrientationHint(180);// 输出旋转90度,保持竖屏录制
// 每秒 4帧
mMediaRecorder.setVideoFrameRate(30);
mMediaRecorder.setVideoEncodingBitRate(10 * 1024 * 1024);
// 文件输出路劲
mMediaRecorder.setOutputFile(mVecordFile.getAbsolutePath());
mMediaRecorder.setPreviewDisplay(mHolder.getSurface());
mMediaRecorder.prepare();
// mCamera.startPreview();
mMediaRecorder.start();
}
设置照相机
if (mCamera != null) {
freeCameraResource();
}
try {
mCamera = Camera.open();
if(mCamera != null && isOpenCamera) setCameraParams();
mCamera.startPreview();
mCamera.setDisplayOrientation(0);
mCamera.setPreviewDisplay(mHolder);
mCamera.unlock();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// 设置照相机
private void setCameraParams() {
// TODO Auto-generated method stub
if (mCamera != null) {
params = mCamera.getParameters();
WindowManager manager = (WindowManager) VideotTranscribe.this.getSystemService(VideotTranscribe.this.WINDOW_SERVICE);
Display display = manager.getDefaultDisplay();
// Point screenResolution = new Point(display.getWidth(), display.getHeight());
//Point p = getBestCameraResolution(params, screenResolution);
params.setPreviewSize(display.getWidth(),display.getHeight());//防止录制预览图像变形
mCamera.setParameters(params);
params = mCamera.getParameters();
}
跪求大神指导