android开发,静音录制视频,在一般清晰度的前提下保证文件大小越小越好
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开发,静音录制视频,在一般清晰度的前提下保证文件大小越小越好的更多相关文章
- Android使用的开发MediaRecorder录制视频
MediaRecorder除了使用录制音频.还可用于录制视频.关于MediaRecorder的具体解释大家能够參考<Android开发之MediaRecorder类具体解释>.使用Medi ...
- Android拍照,录制视频,相机简单功能实现
1.效果图,功能没有录制出来. 基本实现了拍照,录制视频,前后摄像头切换的功能,可以转屏,聚焦. 代码在最下面,可以看代码,运行apk看实际效果. 2.权限不能忘 <uses-permissio ...
- android开发系列之视频断点续传
今天在这篇博客里面,我想说说自己在这几天遇到的一个棘手的问题,就是视频断点续传的问题.其实这在我们开发中是一个很常见的应用场景,比如视频.音频.pdf等相关的文档.如果之前没有接触过的话,你也许会被这 ...
- 整理的一些Android开发类免费视频课程
1.Android实战淘宝网项目视频:http://edu.ibeifeng.com/view-index-id-248.html 2.Android滚动视差实现课程:http://edu.ibeif ...
- Android 用MediaRecorder录制视频太短崩的问题
具体表现: 调用MediaRecorder的start()与stop()间隔不能小于1秒(有时候大于1秒也崩),否则必崩. 错误信息: java.lang.RuntimeException: stop ...
- android开发(3):列表listview的实现 | 下拉刷新
APP里面的列表太常用了,系统提供的listview或grideview可以做到.另外,我希望这个列表能够下拉时触发刷新,于是考虑使用封装了这个功能的开源项目,这里介绍这个: https://gith ...
- Android开发 海康威视 多路视频播放(同时播放视频)
原文地址:Android开发 海康视频 多路视频播放 | Stars-One的杂货小窝 最近公司有个项目需要对接到海康监控摄像头来实现对应的实时播放和回放,但这两个不是我们今天要讨论的重点,APP首页 ...
- Android开发所有视频教程汇总
1.Mars的Android开发视频教程作者讲解的很详细,很全面,系统.以前出了两套视频,分别是<Java4Android视频教程>.<Android视频教程>,以及最新刚新出 ...
- 【转】Android开发笔记(序)写在前面的目录
原文:http://blog.csdn.net/aqi00/article/details/50012511 知识点分类 一方面写写自己走过的弯路掉进去的坑,避免以后再犯:另一方面希望通过分享自己的经 ...
随机推荐
- ado.net工厂模式DbProviderFactories
DbProviderFactory f = DbProviderFactories.GetFactory(System.Configuration.ConfigurationManager.Conne ...
- ParameterDirection参数类型
IDataParameter[] paramArray = new IDataParameter[]{ AdoHelper.GetParameter("ReturnValue",D ...
- Crystal Report在.net中的两种显示方式
Crystal Report在.net中的两种显示方式 编写人:CC阿爸 2014-7-29 近来在完成深圳一公司的项目,对方对各方面要求相当严格,一不满意就拒绝签收,为了对修正水晶报表显示及导出的一 ...
- 小菜的系统框架界面设计-灰姑娘到白雪公主的蜕变(工具条OutLookBar)
灰姑娘本身也有自已的优点,但是却可能因为外貌不讨人喜欢,要变成白雪公主却需要有很多勇气和决心去改变自已: 有一颗善良的心 讨人喜爱的外貌 --蜕变--> 我这里讲的是一个工具条的蜕变过程, ...
- PHP-POSIX正则表达式函数
1.ereg() 格式:ereg("条件",<原始字符串>) ereg()查找字符串,是严格区分大小写的 <?php $string="apples a ...
- 14)Java中Assert
J2SE 1.4在语言上提供了一个新特性,就是assertion(断言)功能,它是该版本在Java语言方面最大的革新.在软件开发中,assertion是一种经典的调试.测试方式. jvm 断言默认是关 ...
- 【转】Messagedlg
) = mrYes then Close; MessageDlg用法 对话框类型:mtwarning——含有感叹号的警告对话框mterror——含有红色叉符号的错误对话框mtinformation ...
- EditText 监听回车事件 避免2次触发
// 侦听回车事件 EidtText txtSN = (EditText) findViewById(R.id.txtSN); txtSN.setOnEditorActionListener(new ...
- eclipse新建android项目,编译出错解决方法
1.新建android项目 2.在libs中,将android-support-v4.jar添加到生成目录 3.如果项目引用了ActionBar等,需要引用V7的话,添加外部Jar包,路径为eclip ...
- Android体系结构
由图可知,android被分成4个层次,以linux为核心,针对手机进行专门的优化,提供了android操作系统最基本的功能,在此之上又分为android runtime和libraries.其中Da ...