MediaRecorder简单的使用

MediaRecorder用于录像录音。

MediaRecorder录像录音必须按照API说明的调用顺序依次调用,否则报错。可能会出现无法调用start()方法或者调用start()后闪退。

MediaRecorder依赖硬件,在一个手机可以用的配置,放到一台别的手机上可能又会出现bug。


添加权限:

<user-permission android:name="android.permission.RECORD_AUdio"/>

<user-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

<user-permission android:name="android.permission.CAMERA"/>

<user-permission android:name="android.permission.FLASHLIGHT"/>

<user-permission android:name="android.permission.MOUNT_UNMOUNT_FILRSYSTEMS"/>

<user-permission android:name="android.hardware.camera"/>

<user-permission android:name="android.hardware.camera.autofocus"/>

下面是MediaRecorder的使用:

//设置调用的摄像头

mediarecorder.setCamera(Camera);

//指定Audio,video来源

mediarecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);

mediarecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);

// 指定CamcorderProfile(需要API Level 8以上版本)

// mMediaRecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH));

//使用CamcorderProfile做配置的话,输出格式,音频编码,视频编码 不要写

// 设置输出格式和编码格式(针对低于API Level 8版本)

mediarecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); //设置输出格式,.THREE_GPP为3gp,.MPEG_4为mp4

mediarecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);//设置声音编码类型 mic

mediarecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);//设置视频编码类型,一般h263,h264

mediarecorder.setOutputFile("/sdcard/myVideo.3gp");

mediarecorder.setVideoSize(640,480);//设置视频分辨率,设置错误调用start()时会报错,可注释掉在运行程序测试,有时注释掉可以运行

//     mediarecorder.setVideoFrameRate(24);//设置视频帧率,可省略

mediarecorder.setVideoEncodingBitRate(10*1024*1024);//提高帧频率,录像模糊,花屏,绿屏可写上调试

mediarecorder.setPreviewDisplay(surfaceHolder.getSurface()); //设置视频预览

try {

// 准备录制

mediarecorder.prepare();

// 开始录制

mediarecorder.start();

} catch (IllegalStateException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

停止录像:(按照顺序调用以下方法)

surfaceview = null;

surfaceHolder = null;

if (mediarecorder != null) {

// 停止录制

mediarecorder.stop();//先停止

mediarecorder.reset(); // 在重置mediarecorder

// 释放资源

mediarecorder.release();//释放mediarecorder

mediarecorder = null;

if (mCamera != null) {

mCamera.release(); //释放摄像头

mCamera = null;

}

}

视频编码格式:default,H263,H264,MPEG_4_SP

获得视频资源:default,CAMERA

音频编码格式:default,AAC,AMR_NB,AMR_WB,

获得音频资源:defalut,camcorder,mic,voice_call,voice_communication,voice_downlink, voice_recognition,  voice_uplink;

输出方式:amr_nb,amr_wb,default,mpeg_4,raw_amr,three_gpp.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 视频编码与封装方式详解 1.编码方式和封装格式 2.视频编码标准两大系统 MPEG-1 MPEG-2 MPEG-3...
    latthias阅读 11,588评论 0 22
  • 研究录音是源于即时通讯的项目。写出一个即时通讯很简单,但是写好一个即时通讯就不是一件容易的事,比如聊天中语音的加入...
    2c2z0阅读 7,024评论 0 2
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,230评论 19 139
  • 安卓平台和声音录制与播放相关的主要是4个类:MediaRecorder,MediaPlayer,SoundPool...
    闲庭阅读 13,662评论 1 47
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,695评论 18 399

友情链接更多精彩内容