MediaRecorder类是Android提供的用来录制音频的组件,其使用步骤基本如下
:
-
创建MediaRecorder对象
-
调用MediaRecorder对象的setAudioSource()方法来设置声音来源,一般传入MediaRecorder.AudioSource.MIC参数来指定录制来自麦克风的声音
-
调用MediaRecorder对象的setOutputFormat()设置录制音频的格式
-
调用MediaRecorder对象的setAudioEncoder()、setAudioEncodingBitRate(int bitRate)、setAudioSamplingRate(int samplingRate)设置所录声音的编码格式、编码位率、采样率等等,这些参数可以控制录制声音的品质。
-
调用MediaRecorder的setOutputFile(String path)方法设置录制的音频文件的保存位置。
-
调用MediaRecorder的prepare()方法准备录制
-
调用MediaRecorder的start()方法开始录制
-
调用MediaRecorder的stop()方法停止录制,并在结束后使用release()方法释放资源
我们创建一套布局
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<Button
android:id="@+id/rRecorder"
android:text="按下按钮录制" />
<TextView
android:text="0s"
android:id="@+id/rTimer" />
</RelativeLayout>
class RecorderActivity : AppCompatActivity() {
val directory: String = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC).absolutePath
val recorder = MediaRecorder()
var isPause = true
var time = 0
val loop: ThreadUtils.Loop = ThreadUtils.Loop(1000).loop {
if (!isPause) {
rTimer.text = "${time++}"
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_recoder)
rRecorder.setOnTouchListener { view, motionEvent ->
when (motionEvent.action) {
MotionEvent.ACTION_DOWN -> {
start()
MotionEvent.ACTION_UP -> {
pause()
recorder.setAudioSource(MediaRecorder.AudioSource.MIC)
recorder.setOutputFormat(MediaRecorder.OutputFormat.AMR_WB)
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_WB)
if (Build.VERSION.SDK_INT >= 10) {
recorder.setAudioSamplingRate(44100)
recorder.setAudioEncodingBitRate(96000)
} else {
// older version of Android, use crappy sounding voice codec
recorder.setAudioSamplingRate(8000)
recorder.setAudioEncodingBitRate(12200)
recorder.setOutputFile("$directory/${DateUtils.getTimeStamp()}.amr")
recorder.prepare()
fun start() {
if (isPause) {
isPause = false
recorder.start()
loop.start()
fun pause() {
if (!isPause) {
isPause = true
//recorder.pause() API 24
fun stop() {
loop.destroy()
recorder.stop()
recorder.release()
override fun onDestroy() {
stop()
super.onDestroy()
- 李刚.疯狂安卓讲义.电子工业出版社.453-456
文章目录前言1 视频参数1.1 videosize——图像图像分辨率1.2 videoFrameRate——视频帧率1.3 videoBitRate——视频码率1.4 videoEncode——视频编码类型1.5 log2 音频参数2.1 audioChannels——声道数2.2 audioSampleRate——音频采样率2.3 audioBitRate——音频码率2.4 audioEncoder——音频编码类型
应用层设置音视频参数
videoFrameHeight
videoFra
您将AudioEncodingBitRate设置得太低.我犯了同样的错误:-)这似乎有效:MediaRecorder recorder = new MediaRecorder();recorder.setAudioSource(MediaRecorder.AudioSource.MIC);if (Build.VERSION.SDK_INT >= 10) {recorder.setAudioS...
录制音频
文章目录录制音频1、AndroidMediaRecorder架构详解2、MediaRecorder状态图3、 使用MediaRecorder类录制视频基本步骤如下:3.1.调用new MediaRecorder()创建MediaRecorder对象。3.2 调用MediaRecorder对象的setAudioSource()方法设置声音来源,3.3. 调用MediaRecorder对象的setOutputFormat()方法设置输出文件的格式。3.4. 设置所录制的音频和视频的编码格式、编码位率等
转自:http://www.cnblogs.com/Amandaliu/archive/2013/02/04/2891604.html
Android提供了两个API用于实现录音功能:android.media.AudioRecord、android.media.MediaRecorder。
网上有很多谈论这两个类的资料。现在大致总结下:
1、AudioRecord
1.简介MediaRecorder类是Android sdk提供的一个专门用于音视频录制,一般利用手机麦克风采集音频,摄像头采集图片信息。2.MediaRecorder主要方法2.1. 方法:setAudioChannels(int numChannels) 作用:设置录制的音频通道数。2.2.方法:setAudioEncoder(int audio_encoder) 作用:设置audio的编码格...
在Android系统中,录像官方使用的是MediaRecorder,这也是录像的正确姿势.因为系统已经帮你控制了很多复杂流程,复杂的转码操作,总之…当然,矫情的你也可以使用MediaCodec录制,这样就可以单独控制音频和视频了.
您可以移步至:http://blog.csdn.net/angcyo/article/details/51043367 查看相关资料;竟然是官方的东西, 为什么文章标题
AudioRecord和MediaRecorder两种都可以录制音频,MediaRecorder已实现大量的封装,操作起来更加简单,而AudioRecord使用起来更加灵活,能实现更多的功能。1.AudioRecord:
优点:可以实现语音的实时处理,进行边录边播,对音频的实时处理。
缺点:输出的是PCM的语音数据,如果保存成音频文件是不能被播放器播放的。要用到AudioTrack这个去进行处理
public void startRecord() {
mediarecorder = new MediaRecorder();// 创建mediarecorder对象
mCamera = getCameraInstance();
Parameters parameters = mCamera.getParameters();
一、问题代码private void initRecord() throws IOException {
mMediaRecorder = new MediaRecorder();
mMediaRecorder.reset();
if (mCamera != null)
mMediaRecorder.setCamera(mCam
为了在 Android 应用中录制声音,Android提供了 MediaRecorder 类,关于MediaRecorder的详解大家可以参考《Android开发之MediaRecorder类详解》。
使用MediaRecorder
录制声音的步骤:
1) 创建 MediaRecorder 对象。
2) 调用MediaRecorder对象的setAudioSource()方法设置声音来源,