public void startRecord() {
mediarecorder = new MediaRecorder();// 创建mediarecorder对象
mCamera = getCameraInstance();
Parameters parameters = mCamera.getParameters();
mCamera.autoFocus(null);
// 解锁camera
mCamera.setDisplayOrientation(90);
mCamera.unlock();
mediarecorder.setCamera(mCamera); List<Size> supportedPreviewSizes = parameters.getSupportedPreviewSizes();
for(int i=0;i<supportedPreviewSizes.size();i++)
{
Log.v("startRecord", "width="+supportedPreviewSizes.get(i).width+";height="+supportedPreviewSizes.get(i).height);
}
// 设置录制视频源为Camera(相机)
// mediarecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
mediarecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
// 设置录制文件质量,格式,分辨率之类,这个全部包括了
// mediarecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_480P)); //7.43M 10frame
// mediarecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_1080P)); //70.94M 10frame
// mediarecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_CIF)); // 2.6M 5frame/10frame
// mediarecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_QCIF)); //0.76M 30frame 模糊
// mediarecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_QVGA)); //2.1M
// mediarecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_TIME_LAPSE_CIF)); //不支持
// mediarecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_LOW)); //766KB 还行 比QUALITY_QCIF好
// mediarecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_TIME_LAPSE_LOW)); //1M 质量类似LOW
// mediarecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_TIME_LAPSE_480P)); //480p效果
// mediarecorder.setAudioEncoder(MediaRecorder.AudioEncoder.);
// mediarecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264); // boolean isSupQUALITY_TIME_LAPSE_CIF = CamcorderProfile.hasProfile(CamcorderProfile.QUALITY_TIME_LAPSE_CIF);
// boolean isSupQUALITY_LOW = CamcorderProfile.hasProfile(CamcorderProfile.QUALITY_LOW);
// Log.v("startRecord", "isSupQUALITY_TIME_LAPSE_CIF="+isSupQUALITY_TIME_LAPSE_CIF+";isSupQUALITY_LOW="+isSupQUALITY_LOW);
//
// mediarecorder.setVideoFrameRate(30); //start实现录像静音
mediarecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
// mediarecorder.setVideoSize(640,480);
mediarecorder.setVideoSize(1280,720);
//设置编码比特率,不设置会使视频图像模糊
// mediarecorder.setVideoEncodingBitRate(5*1024*1024); //清晰 512*1024(不清楚)
mediarecorder.setVideoEncodingBitRate(900*1024); //较为清晰,且文件大小为3.26M(30秒)
mediarecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264); //H263的貌似有点不清晰
// mediarecorder.setVideoFrameRate(10); //设置无效
//end mediarecorder.setPreviewDisplay(surfaceHolder.getSurface()); // 设置视频文件输出的路径
mediarecorder.setOutputFile(Environment.getExternalStorageDirectory().getAbsolutePath() + "/data/data/"+System.currentTimeMillis()+".mp4");
try {
// 准备录制
mediarecorder.prepare();
// 开始录制
mediarecorder.start();
} catch (Exception e) {
e.printStackTrace();
}
}

一般情况下,我们直接调用  mediarecorder 会产生很大的视频文件,30秒的为70M,因此,我们需要在录制视频时尽量控制视频文件的大小!

mediarecorder.setVideoEncodingBitRate(900*1024);   //设置编码比特率,不设置会使视频图像模糊

android开发,静音录制视频,在一般清晰度的前提下保证文件大小越小越好的更多相关文章

  1. Android使用的开发MediaRecorder录制视频

    MediaRecorder除了使用录制音频.还可用于录制视频.关于MediaRecorder的具体解释大家能够參考<Android开发之MediaRecorder类具体解释>.使用Medi ...

  2. Android拍照,录制视频,相机简单功能实现

    1.效果图,功能没有录制出来. 基本实现了拍照,录制视频,前后摄像头切换的功能,可以转屏,聚焦. 代码在最下面,可以看代码,运行apk看实际效果. 2.权限不能忘 <uses-permissio ...

  3. android开发系列之视频断点续传

    今天在这篇博客里面,我想说说自己在这几天遇到的一个棘手的问题,就是视频断点续传的问题.其实这在我们开发中是一个很常见的应用场景,比如视频.音频.pdf等相关的文档.如果之前没有接触过的话,你也许会被这 ...

  4. 整理的一些Android开发类免费视频课程

    1.Android实战淘宝网项目视频:http://edu.ibeifeng.com/view-index-id-248.html 2.Android滚动视差实现课程:http://edu.ibeif ...

  5. Android 用MediaRecorder录制视频太短崩的问题

    具体表现: 调用MediaRecorder的start()与stop()间隔不能小于1秒(有时候大于1秒也崩),否则必崩. 错误信息: java.lang.RuntimeException: stop ...

  6. android开发(3):列表listview的实现 | 下拉刷新

    APP里面的列表太常用了,系统提供的listview或grideview可以做到.另外,我希望这个列表能够下拉时触发刷新,于是考虑使用封装了这个功能的开源项目,这里介绍这个: https://gith ...

  7. Android开发 海康威视 多路视频播放(同时播放视频)

    原文地址:Android开发 海康视频 多路视频播放 | Stars-One的杂货小窝 最近公司有个项目需要对接到海康监控摄像头来实现对应的实时播放和回放,但这两个不是我们今天要讨论的重点,APP首页 ...

  8. Android开发所有视频教程汇总

    1.Mars的Android开发视频教程作者讲解的很详细,很全面,系统.以前出了两套视频,分别是<Java4Android视频教程>.<Android视频教程>,以及最新刚新出 ...

  9. 【转】Android开发笔记(序)写在前面的目录

    原文:http://blog.csdn.net/aqi00/article/details/50012511 知识点分类 一方面写写自己走过的弯路掉进去的坑,避免以后再犯:另一方面希望通过分享自己的经 ...

随机推荐

  1. Unable to add App ID because the '10' App ID limit in '7' days has been exceeded.

    Unable to add App ID because the '10' App ID limit in '7' days has been exceeded. 官方的原因是对bundle iden ...

  2. pap与chap协议

    1.pap:直接在网络上发送密码明文 2.chap: 网络上发送的是密码的密文;server给client发一段随机数(challenge),client利用随机数对密码进行加密,将用户名和加密后的密 ...

  3. Js 访问Aspnet后台页面变量

    一.普通WebForm页面 <html xmlns="http://www.w3.org/1999/xhtml"><head runat="server ...

  4. linux下securetty文件

    “/etc/securetty”文件允许你规定“root”用户可以从那个TTY设备登录.登录程序(通常是“/bin/login”)需要读取“/etc/securetty”文件.它的格式是:列出来的tt ...

  5. android 分段显示文本颜色控件

    效果: 使用: <com.bei.myapplication.app.ProgressTextView xmlns:ptv="http://schemas.android.com/ap ...

  6. win7防火墙打不开(无法启动windows firewall服务)

    点击windows 7控制面板中防火墙的“推荐配置”没有反应:打开“服务”,无法启动windows firewall,并报错.  可能很多的win7用户都碰到过这样的一种情况,那就是win7的防火墙打 ...

  7. 获取php的配置

    ini_get — 获取一个配置选项的值 返回值 成功是返回配置选项值的字符串,null 的值则返回空字符串.如果配置选项不存在,将会返回 FALSE. <?php /* 我们的 php.ini ...

  8. 【深入比较ThreadLocal模式与synchronized关键字】

    [深入比较ThreadLocal模式与synchronized关键字]ThreadLocal模式与synchronized关键字都是用于处理多线程并发访问变量的问题.只是两者处理问题的角度和思路不同. ...

  9. Python开发【第一篇】Python基础之字符串格式化

    字符串格式化 Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-310 ...

  10. UIViewAnimationOptions swift 2

    UIView.animateWithDuration(0.5, delay: 0.5, usingSpringWithDamping: 0.5, initialSpringVelocity: 0.0, ...