最近项目要做一个类似于微信下拉拍小视频的控件,要求在竖屏拿着手机的时候在预览界面里面看到的画面宽高比是4:3,输出的视频也是宽高比是4:3,从网上扒下来的Demo关键代码如下: private void initRecord() throws IOException {
mMediaRecorder = new MediaRecorder();
mMediaRecorder.reset();
if (mCamera != null)
mMediaRecorder.setCamera(mCamera);
mMediaRecorder.setOnErrorListener(this);
mMediaRecorder.setPreviewDisplay(mSurfaceHolder.getSurface());
mMediaRecorder.setVideoSource(VideoSource.CAMERA);// 视频源
mMediaRecorder.setAudioSource(AudioSource.MIC);// 音频源
mMediaRecorder.setOutputFormat(OutputFormat.MPEG_4);// 视频输出格式
mMediaRecorder.setAudioEncoder(AudioEncoder.AMR_NB);// 音频格式
mMediaRecorder.setVideoSize(320, 240);// 设置分辨率:
// mMediaRecorder.setVideoFrameRate(16);//
mMediaRecorder.setVideoEncodingBitRate(1 * 1024 * 512);// 设置帧频率
mMediaRecorder.setOrientationHint(90);// 输出旋转90度,保持竖屏录制
mMediaRecorder.setVideoEncoder(VideoEncoder.MPEG_4_SP);// 视频录制格式
// mediaRecorder.setMaxDuration(Constant.MAXVEDIOTIME * 1000);
mMediaRecorder.setOutputFile(mVecordFile.getAbsolutePath());
mMediaRecorder.prepare();
try {
mMediaRecorder.start();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (RuntimeException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
//设置摄像头的参数
private void setCameraParams() {
if (mCamera != null) {
Parameters params = mCamera.getParameters();
params.set("orientation", "landscape"); //此处设置成landscape、portrait都无效
mCamera.setParameters(params);
}
}使用SurfaceView进行视频的拍摄时预览时虽然做成了4:3的宽高比,但是画面的高度被压缩了,没有达到预期的效果,输出的视频宽高比也不是4:3,依旧是系统相机的宽高比。设置mMediaRecorder.setOrientationHint(90)无效设置Camera的参数 params.set("orientation", "landscape"); 设置为portrait依旧无效。求助大神,帮忙看看怎么做,谢谢。需求:竖屏拿手机时预览画面宽高比是4:3,录制的视频宽高也是4:3。做到跟微信下拉拍一个效果。
添加回答
举报
0/150
提交
取消