打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
关于安卓视频拍摄的小问题
由于在项目中要加入视频拍摄 第一次使用了系统 intent 方法
 Intent intent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
// String currentVideoName = System.currentTimeMillis() + ".mp4";
// File dir = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/xxx/");
// File out = new File(dir, currentVideoName);
// PreferencesUtils.getInstance(this).put("REQUEST_VIDEO", out.getAbsolutePath());
// Uri uri = Uri.fromFile(out);
// intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
// //限制时长
// intent.putExtra(MediaStore.EXTRA_DURATION_LIMIT, 6);
// //0和1是所有相机都有的设置,0是最小,1是最大,不存在中间0.5
// intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 0);
// //限制大小
// intent.putExtra(MediaStore.EXTRA_SIZE_LIMIT, 1024*1024L);
该方法使用简单 但是画面质量 只有0 和 1 2种 如果是1 1秒大概在2m 6秒的视频12m左右 上传和播放都会延迟  如果用第三方进行压缩 也比较耗时 
换了一种方式
MediaRecorder

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(mWidth, mHeight);// 设置分辨率:
//setVideoSize需要权衡的因素较多,主要包括三方面:MediaRecorder支持的录制尺寸、
// 视频文件的大小以及兼容不同Android机型。这里采用640 * 480(微信小视频的尺寸是320*240),
// 文件大小在500-1000kb之间,并且市面上99%以上机型支持此录制尺寸。
mMediaRecorder.setVideoSize(640, 480);
// 设置录制的视频帧率。必须放在设置编码和格式的后面,否则报错  
// mMediaRecorder.setVideoFrameRate(16);// 这个我把它去掉了,感觉没什么用
mMediaRecorder.setVideoEncodingBitRate(1 * 1024 * 1024);// 设置帧频率,然后就清晰了 肯定文件越大越清晰
mMediaRecorder.setOrientationHint(90);// 输出旋转90度,保持竖屏录制
mMediaRecorder.setVideoEncoder(VideoEncoder.MPEG_4_SP);// 视频录制格式
// mediaRecorder.setMaxDuration(Constant.MAXVEDIOTIME * 1000);
mMediaRecorder.setOutputFile(mRecordFile.getAbsolutePath());
mMediaRecorder.prepare();
try {
mMediaRecorder.start();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (RuntimeException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
使用这个的好处是可以再拍摄之前设置参数 画面的帧数 尺寸 可以有效限制文件大小 10秒的视频在1m左右 只需要注意权限文件就可以了
 
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Android Camera 使用小结
Android常用代码合集
android调用摄像头拍照,从相册中选择照片并裁剪
android 调用系统拍照,浏览&裁剪
Android开发之Intent跳转到系统应用中的拨号界面、联系人界面、短信界面 .相机.录影机.......
适配Android10 拍照,相册,裁剪,上传图片
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服