android mediareorder 使用实践总结

本文总结了作者在使用Android MediaRecorder进行视频录制时遇到的问题及解决方案,包括摄像头初始化、预览与录制画面不同步、设备兼容性等问题。通过对不同设备的适配,最终实现了一种接近屏幕比例的分辨率拍摄方法,以避免画面失真。同时,作者呼吁社区分享更多关于MediaRecorder的实践经验。
摘要由CSDN通过智能技术生成

 这里对这段时间以来mediarecorder的学习进行一下总结。先对mediarecorder的基本用法进行一些说明。
                   
  private void createCamera(int type){
	cameraType = type;
	mCamera = openCamera(type);
	if (mCamera==null){
		UiHelper.shortToast(this, "请尝试关闭其他相机软件再打开");
		return;
	}
	orientation = CameraUtil.setCameraDisplayOrientation(this, 0, mCamera);
	Camera.Parameters mParameters = mCamera.getParameters();

	Size size = getOptimalPreviewSize(mParameters.getSupportedPreviewSizes());
	curPreviewWidth = size.width;
	curPreviewHeight = size.height;
	mParameters.setPreviewSize(curPreviewWidth, curPreviewHeight);
	// 因为CamcorderProfile是以横屏为标准的,而当前屏幕录像时竖屏。所以要把Height和Width要反过来传

	// 如果支持变焦,把变焦设置为0
	if (mParameters.isZoomSupported()) mParameters.setZoom(0);
	// 设置为自动连续对焦
	List<String> mFocusModes = mParameters.getSupportedFocusModes();
	if (mFocusModes.contains(Parameters.FOCUS_MODE_CONTINUOUS_VIDEO)) {
		mParameters.setFocusMode(Parameters.FOCUS_MODE_CONTINUOUS_VIDEO);
		mSupportContinuousVideo = true;
	} else {
		mSupportContinuousVideo = false;
	}

	if (mFocusModes.contains(Parameters.FOCUS_MODE_AUTO)) {
		mSupportAutoFocus = true;
	} else {
		mSupportAutoFocus = false;
	}
	mVideoFrame = getVideoFrame(mParameters.getSupportedPreviewFpsRange());
	// 设置为多媒体录制,加快打开的速度 
	mParameters.setRecordingHint(true);
	// 是否支持视频防抖,在小米4上会造成画面抖动
	if (mParameters.isVideoStabilizationSupported()){
	// mParameters.setVideoStabilization(true);
	}
	mCamera.setParameters(mParameter
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值