Android 录音和播放
原文地址:Android 录音和播放
今天主要讲解一下使用MediaRecorder 实现录音,主要是参照Android官网介绍来说明。
今天讲的并不能实现一边录音一边播放,下一篇文章我再说如何解决这问题。下面是我们今天要讲解的Mediarecorder的状态机图。摘录自Android官网。
(PS:新建的QQ群,有兴趣可以加入一起讨论:Android群:322599434)
1、使用Mediarecorder 录音
MediaRecorder类用来进行媒体采样,包括音频和视频。也就是用来记录音频和视频方法的类,记录的数据一般都是写入到文件里面。因此我们可以通过这个类实现录音和录视频的功能。下面介绍MediaRecorder用来录音的简单方法:
- //Edited by mythou
//泡泡糖 - 博客园
- MediaRecorder recorder = new MediaRecorder();
- recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
- recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
- recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
- recorder.setOutputFile(PATH_NAME);
- recorder.prepare();
- recorder.start(); // 开始录音
- ...
- recorder.stop();
- recorder.reset(); // You can reuse the object by going back to setAudioSource() step
- recorder.release(); // Now the object cannot be reused
上面是使用MediaRecorder录音的简单流程代码,基本上你使用的代码,就能实现录音的功能。
2、MediaRecorder 相关的类
- //Edited by mythou
//泡泡糖 - 博客园
- //定义音频编码
- class MediaRecorder.AudioEncoder
- //定义声音资源
- class MediaRecorder.AudioSource
- //回调接口,当录音出现错误的时候调用
- interface MediaRecorder.OnErrorListener
- //回调接口,当录音出现错误的时候调用
- interface MediaRecorder.OnInfoListener
- //定义输出格式
- class MediaRecorder.OutputFormat
- //定义视频编码
- class MediaRecorder.VideoEncoder
- //定义视频source
- class MediaRecorder.VideoSource
3、MediaRecorder常用方法
- //Edited by mythou
//泡泡糖 - 博客园
- //获取音频信号源的最高值。
- final static int getAudioSourceMax()
- //最后调用这个方法采样的时候返回最大振幅的绝对值
- int getMaxAmplitude()
- //准备recorder 开始捕获和编码数据
- void prepare()
- //发布与此MediaRecorder对象关联的资源
- void release()
- //重新启动mediarecorder到空闲状态
- void reset()
- //设置录制的音频通道数。
- void setAudioChannels(int numChannels)
- //设置audio的编码格式
- void setAudioEncoder(int audio_encoder)
- //设置录制的音频编码比特率
- void setAudioEncodingBitRate(int bitRate)
- //设置录制的音频采样率。
- void setAudioSamplingRate(int samplingRate)
- //设置用于录制的音源。
- void setAudioSource(int audio_source)
- //辅助时间的推移视频文件的路径传递。
- void setAuxiliaryOutputFile(String path)
- void setAuxiliaryOutputFile(FileDescriptor fd)
- //在文件描述符传递的辅助时间的推移视频
- //设置一个recording的摄像头
- void setCamera(Camera c)
- //设置视频帧的捕获率
- void setCaptureRate(double fps)
- //设置记录会话的最大持续时间(毫秒)
- void setMaxDuration(int max_duration_ms)
- //设置记录会话的最大大小(以字节为单位)
- void setMaxFileSize(long max_filesize_bytes)
- //注册一个回调被调用发生错误时,同时录制
- void setOnErrorListener(MediaRecorder.OnErrorListener l)
- //注册要同时记录一个信息事件发生时调用的回调。
- void setOnInfoListener(MediaRecorder.OnInfoListener listener)
- //设置输出的视频播放的方向提示
- void setOrientationHint(int degrees)
- //传递要写入的文件的文件描述符
- void setOutputFile(FileDescriptor fd)
- //设置输出文件的路径
- void setOutputFile(String path)
- //设置在录制过程中产生的输出文件的格式
- void setOutputFormat(int output_format)
- //表面设置显示记录媒体(视频)的预览
- void setPreviewDisplay(Surface sv)
- //从一个记录CamcorderProfile对象的使用设置
- void setProfile(CamcorderProfile profile)
- //设置视频编码器,用于录制
- void setVideoEncoder(int video_encoder)
- //设置录制的视频编码比特率
- void setVideoEncodingBitRate(int bitRate)
- //设置要捕获的视频帧速率
- void setVideoFrameRate(int rate)
- //设置要捕获的视频的宽度和高度
- void setVideoSize(int width, int height)
- //开始捕捉和编码数据到setOutputFile(指定的文件)
- void setVideoSource(int video_source)
- //开始录音
- void start()
- //停止recording
- void stop()
4、播放录音
- //Edited by mythou
//泡泡糖 - 博客园
- mPlayer = new MediaPlayer();
- mPlayer.setDataSource(mSampleFile.getAbsolutePath());
- mPlayer.setOnCompletionListener(this);
- mPlayer.setOnErrorListener(this);
- mPlayer.prepare();
- mPlayer.start();
- //.......
- mPlayer.stop();
- mPlayer.release();
- mPlayer = null;
上面是一段简单播放录音的过程,结合上面录音代码,就可以实现录音和回放。
MediaRecorder的使用方法很简单,最后给出Android源码里面的录音程序,方便有需要的朋友下载看看。下一篇文章再讲解如何实现一边录音一边播放功能。
Android 录音和播放相关推荐
- Android录音并播放(mp3或amr格式)
Android项目中媒体是很多人头疼的一个问题,不仅仅因为处理起来很麻烦,而且不同的手机差别很大(和硬件,系统都有关系),今天就总结一下Android中的录音和播放,可保存成mp3或amr格式. 小米 ...
- android 录音与播放录音 带根据音频大小动态效果
先看看效果图: 首先是布局文件: <?xml version="1.0" encoding="utf-8"?> <Linear ...
- Android录音与播放
Android多媒体框架包含获取和编码多种音频格式的支持,所以你可以轻松地把音频合并到你的应用中.如果设备支持,你可以使用MediaRecorder APIs 进行录音. 本章向你展示如何写一个应用从 ...
- [Android] 录音与播放录音实现
android开发文档中有一个关于录音的类MediaRecord,一张图介绍了基本的流程: 给出了一个常用的例子: MediaRecorder recorder = new MediaRecorder ...
- 音视频开发 ● android录音到播放的整个过程
使用 AudioRecord 采集音频PCM并保存到文件: api - AndioRecord : AndioRecord类的主要功能是让各种JAVA应用能够管理音频资源,以便它们通过此类能够录制声音 ...
- Android 实时录音和回放,边录音边播放 (KTV回音效果)
原文地址为: Android 实时录音和回放,边录音边播放 (KTV回音效果) 上一篇介绍了如何使用Mediarecorder来录音,以及播放录音.不过并没有达到我的目的,一边录音一边播放.今天就讲解 ...
- Android开发之PCM录音实时播放的实现方法 | 边录音边播放 |PCM录音播放无延迟 | 录音无杂音 | 录音无噪音
先说下录音得开启录音权限 <uses-permission android:name="android.permission.RECORD_AUDIO" /> 然后录音 ...
- android录音播放并上传
最近研究了下录音上传,各位有需要可参考下,如有不妥欢迎指出 <pre name="code" class="html">package com.ki ...
- Android音频录制方案,Android录音,录制其他App播放的声音
Android录音,录制其他App播放的声音 从Android10(SDK 29)版本开始,可以设置录音App的源为其他App,这样就可以录制其他App播放的声音 此方案有以下注意几点 设置了源为其他 ...
最新文章
- 分享一个多线程实现[冒泡][选择][二分法]排序的例子
- AssetBundle
- 微信 小程序组件 循环
- C++:12---运算符重载
- 【机器学习-西瓜书】二、性能度量:召回率;P-R曲线;F1值;ROC;AUC
- docker端口映射失效解决方法
- Android Studio禁止混淆JNI代码
- Ubuntu配置 PPTP 服务器端
- android xml 指纹动画,Android 指纹识别(给应用添加指纹解锁)
- 机器学习 python 随机抽样random sampling 代码
- puml绘制思维导图_盘点那些美美哒的在线思维导图制作神器
- 人脸识别智能门禁D508也能“码”上开门
- Chrome 字体模糊解决
- 如何用python计算圆周率_如何用python计算圆周率?
- 三年Java开发,java程序员电脑推荐
- 设置每天定时给自己发送邮件、企业微信提醒
- mpvue项目--书架读书
- Rxjava入门与使用
- 愚人节搞怪——突破IP限制刷票
- 亲测教程分享|客服系统搭建详细教程,PHP在线客服系统,来客客服系统源码