关于安卓视频拍摄的小问题
来源:互联网 发布:研究方向数据图像处理 编辑:程序博客网 时间:2024/04/23 19:09
由于在项目中要加入视频拍摄 第一次使用了系统 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左右 上传和播放都会延迟 如果用第三方进行压缩 也比较耗时
换了一种方式MediaRecordermMediaRecorder = 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左右 只需要注意权限文件就可以了
阅读全文
0 0
- 关于安卓视频拍摄的小问题
- 【问题】拍摄的视频无编码信息
- 关于FFmpeg对手机里拍摄的视频进行转码时角度问题的处理
- 关于安卓开发页面跳转的小问题
- 关于开发安卓sqlite的小问题记录
- 关于调用Android相机拍摄照片返回数据过小的问题
- camera拍摄视频耗电过快的问题分析
- camera拍摄视频耗电过快的问题分析
- 安卓视频问题
- 模仿微信拍摄小视频
- android拍摄视频的实现
- 安卓关于使用V4L2操作usb摄像头 暂停后恢复视频流卡死的问题
- 关于安卓的小知识点
- android媒体库更新问题,即自定义拍摄视频拍摄完毕,无法立即查看拍摄视频文件问题
- 安卓的一点小问题
- GPUImage拍摄视频第一帧黑屏问题
- iOS 拍摄视频方向不正确问题
- 关于安卓手机安装obb软件包的一个小问题
- 同步加载、异步加载、延迟加载
- 转存Druid监控记录到日志文件
- curl post base64 jpeg图片精简版
- servlet的初始化过程
- Ubuntu下Android源码的获取(Android4.4为例)
- 关于安卓视频拍摄的小问题
- 最简单的时间轴实现
- android 设置字符串中包含相关文字设置文字颜色
- MPTCP
- 实体类(VO,DO,DTO)的划分
- Meta http-equiv 属性详解
- java中堆栈区别
- chrome调试压缩后的代码
- C++ Stl vector