Android 音频的录制

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

MediaRecorder类详解


手机一般都有麦克风和摄像头,而Android系统就可以利用这些硬件来录制音视频了。
为了增加对录制音视频的支持,Android系统提供了一个MediaRecorder的类。该类的使用也非常简单,下面让我们来了解一下这个类

一、结构

java.lang.Object->android.media.MediaRecorder


二、类概述:

用于录制音频和视频的一个类。

三、状态图:





说明:


与MediaPlayer类非常相似MediaRecorder也有它自己的状态图。下面是关于MediaRecorder的各个状态的介绍:


1、Initial:初始状态,当使用new()方法创建一个MediaRecorder对象或者调用了reset()方法时,该MediaRecorder对象处于Initial状态。在设定视频源或者音频源之后将转换为Initialized状态。另外,在除Released状态外的其它状态通过调用reset()方法都可以使MediaRecorder进入该状态。


2、Initialized:已初始化状态,可以通过在Initial状态调用setAudioSource()或setVideoSource()方法进入该状态。在这个状态可以通过setOutputFormat()方法设置输出格式,此时MediaRecorder转换为DataSourceConfigured状态。另外,通过reset()方法进入Initial状态。


3、DataSourceConfigured:数据源配置状态,这期间可以设定编码方式、输出文件、屏幕旋转、预览显示等等。可以在Initialized状态通过setOutputFormat()方法进入该状态。另外,可以通过reset()方法回到Initial状态,或者通过prepare()方法到达Prepared状态。


4、Prepared:就绪状态,在DataSourceConfigured状态通过prepare()方法进入该状态。在这个状态可以通过start()进入录制状态。另外,可以通过reset()方法回到Initialized状态。


5、Recording:录制状态,可以在Prepared状态通过调用start()方法进入该状态。另外,它可以通过stop()方法或reset()方法回到Initial状态。


6、Released:释放状态(官方文档给出的词叫做Idle state 空闲状态),可以通过在Initial状态调用release()方法来进入这个状态,这时将会释放所有和MediaRecorder对象绑定的资源。


7、Error:错误状态,当错误发生的时候进入这个状态,它可以通过reset()方法进入Initial状态。



提示:与MediaPlayer相似使用MediaRecorder录音录像时需要严格遵守状态图说明中的函数调用先后顺序,在不同的状态调用不同的函数,否则会出现异常。

下面一个实例代码描述了的创建过程:


/**
	 * 开始录音
	 */
	private void startRecording() 
	{
		BaseUtils.printd(TAG, "startRecording");
		mParams.mFileName = mParams.mFileDir + System.currentTimeMillis() + "amr";
		mRecorder = new MediaRecorder();
		mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
		mRecorder.setOutputFormat(MediaRecorder.OutputFormat.RAW_AMR);
		mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
		mRecorder.setOutputFile(mParams.mFileName);
		mRecorder.setOnInfoListener(mRecorderOnInfoListener);
		
		if(mParams.mMaxFileSize > 0)
		{
			mRecorder.setMaxFileSize(mParams.mMaxFileSize);
		}
		
		if(mParams.mMaxDurationSize > 0)
		{
			mRecorder.setMaxDuration(mParams.mMaxDurationSize);
		}
		
		try 
		{
			mRecorder.prepare();
			
			mRecorder.start();
			mObtainDecibelThread = new ObtainDecibelThread();
			mObtainDecibelThread.start();
		} 
		catch (Exception e) 
		{
			BaseUtils.printe("Exception", "Exception:" + e);
		}

		

	}



android实现之高清音频录制编码 场景说明: 在现在有安卓手机中AudioRecord录制出的音频是通过扬声器或表克风录制出来的。对于外录即扬声器录制的视频而言,音质十分渣。对于想要录制现场的声音如开会时,两人对话时声音证据保存的声音录制,完全不能满足需求。鉴于此,研究安卓平台下高清音频录制的解决方案。 原理:本人实现原理很简单,分为两部分:1, 原始音频采集,2 音频编码 。 1,原始音频采集: 还是通过 阅读详情

相关推荐

Android实现音频录制的两种方式

在移动APP开发中,每逢APP应用设计到多媒体开发的时候,都会让很多的程序员头疼不已,而且项目的开发进度会放慢、项目 的难度也会加大蛮多,同时APP的测试也会增加Android中的多媒体开发,有音频的播放、音频录制、视频的播放、视频的录制 等,虽然Android的SDK中提供了一些基础的开发API,如音频录制提供了两种方式:AudioRecord录制音频和MediaRecorder录 制音频。AudioRecord相对于MediaRecorder来说,更加接近底层,为我们封装的方法也更少。然而实

zyxNobita专栏 1375

android 录音DEMO

开发的简单的录音,大家可以看看做的开发思路,很觉得的一个例子

Android 音频(一) _ 采样量化编码 & AudioRecord 录制音频

为了给每一个离散值都对应一个数字码,必须将无限种取值转化为有限种取值(对于只能处理二进制的计算机来说,取值的可能数应该是2的倍数)。音频数据的大小以字节为单位,音频数据的读取是一批一批进行的,所以需要一个 while 循环持续不断地读取,每次读取多少字节由申请的缓冲区大小决定。这个接口提供录制音频的抽象能力。是和业务层打交道的,所以这一层就多了些零碎的控制逻辑,包括音频焦点的获取、存储和录音权限的判断、创建时声音文件、录音状态的回调。.pcm 后缀的文件是非常非常大的,这增加了存储和网络传输的成本。

2401_85730618的博客 1104

Android audioRecord录音Demo

使用Android audioRecord录音完整Demo,最终生成wav文件。

Android音频录制基础教程:MediaRecorder Demo1

Android开发中,音频和视频的录制是一项常见的功能。MediaRecorder API提供了一种简单的方法,允许开发者快速实现录制功能。它是一个高级的API,屏蔽了底层的复杂性,允许用户通过几个简单的步骤就能开始录制音频或视频。MediaRecorder API可以处理音频源的采集、编码、输出格式的设置,以及录制过程的控制和资源管理。这使得它成为开发录音功能的首选。

weixin_35903223的博客 1303

android录音Demo

android录音Demo,分别用AudioRecorde和MediaRecorder实现,测试可用,因为是网上搜集的程序,就不要资源分了,整理出来方便大家使用。

android 开发录制音频并播放demo

android 开发录制音频并播放demo

安卓录制音频:使用MediaRecord实现

这一段时间,由于项目需要,一直在搞使用音频录制。看了网上很多大牛的代码,各种删删减减,百度来百度去,终于大体把流程搞通了,用时5天。 注意:本次代码实现:通过麦克风获取说话人语音->存储语音->播放刚录制的语音->退出。 一、MediaRecord简介 MediaRecord可用于视频与音频的捕捉,由于项目采用的是对于说话人语音采集,所以选择MediaRecord实现。 巨人的肩膀

vainfanfan的博客 4455

Android笔记84】Android之使用MediaRecorder录制音频

MediaRecorder是Android提供一个专门用于录制音频和视频的,它能够捕获各种编码格式的音频、视频。在使用MediaRecorder录制音视频的时候,确保android系统有相应的设备,例如:麦克风、相机等设备(注意:录制视频的时候,需要调用相机设备)。注意:Android Studio模拟器上无法录制音频,所以最好通过真机测试。

✅ Java 开发工程师 671

Android录制音频

我们通常可以通过以下步骤在Android录制音频或视频 (1)   创建android.media.MediaRecorder的一个实例。 (2)   创建android.content.ContentValues的一个实例,并添加TITLE、TIMESTAMP及重要的MIME_TYPE等属性。 (3)   使用android.content.ContentResolver为数据创建一个

ITSource的专栏 1170

Android 音频录制 的三种方式

对于录制音频Android系统就都自带了一个小小的应用,可是使用起来可能不是特别的灵活。所以有提供了另外的俩种。下边来介绍下这三种录制的方式;1、通过Intent调用系统的录音器功能,然后在录制完毕保存以后在onActivityResult中返回录制音频的uri,然后通过Mediaplayer进行播放调用系统的录音器 private final static int REQUEST_RECOR...

whyqcwy的专栏 4411

安卓学习日记——音频录制

音频录制 package com.example.mediarecorder; import android.media.MediaRecorder; import android.os.Environment; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.vi...

chen_xiaoke的博客 195

Android平台音频录制与播放技术深入解析

Android开发中,音频处理是实现丰富多媒体体验的重要组成部分。Android平台提供了多个音频API,让开发者可以方便地对音频数据进行录制、处理和播放。其中最核心的API包括AudioTrack等。本文将为读者介绍这些API的基本功能与使用方法,以及如何在实际项目中优化音频性能和处理相关权限问题。开发者有时需要根据特定需求实现自定义的录音格式,比如添加额外的元数据信息。这要求我们在录制时将数据以特定的字节流格式保存,并在播放时能够正确解析该格式。

weixin_32661831的博客 1109

安卓多媒体API——音频录制MediaRecorder

序 三分钟前了视频录制,实际上视频录制不是已经包括音频录制了吗? https://blog.csdn.net/nishigesb123/article/details/89507576 但如果单独的想要录制一段语音该如何操作呢?(遮住摄像头,误) 比如像微信一样,录制一段指定时长的语音,这篇文章就记录了安卓中的音频录制。 归档到多媒体。 MediaRecorder 概述 andro...

旧日灯塔 650

安卓使用MediaRecorder(1)录制音频的详细使用

引言 使用 MediaRecorder 的步骤 常见问题及解决思路 无法访问存储卡目录 录制音频文件没有声音 录制过程中出现异常 MediaRecorder无法正常启动 录制的音质或者画质很差 录制的文件无法播放 结语

分享Android应用和系统开发、音视频编码、性能优化相关知识 5834

Android音频录制开源项目推荐:Continuous Audiorecorder

Android音频录制开源项目推荐:Continuous Audiorecorder 1. 项目基础介绍及主要编程语言 Continuous Audiorecorder 是一个开源项目,旨在为 Android SDK 提供缺失的功能:支持暂停的音频录制功能。该项目基于 mp4parser 实现,主要使用 Java 编程语言编写。Continuous Audiorecorder 适用于那些需要在应用...

gitblog_00412的博客 516

Android MediaRecorder录制音频

今天介绍一下在Android中怎么录制音频,在Android中使用MediaRecorder来录制音频,步骤:   1、创建MediaRecorder对象。   2、调用MediaRecorder对象的setAudioSource()方法设置声音来源,一般传入MediaRecorder.AudioSource.MIC参数指定录制来在麦克风的声音。   3、调用MediaRecorder对象的set

潘洪金的博客 1082

Android音频开发(二):录制音频(WAV及MP3格式)

首先看下音频录制跟播放效果简图: CSDN不支持本地视频上传,我就先上传了一张截图: 上面是录音:长按即可录音支持声波动画,右滑删除等。支持录制pcm、wav、mp3格式音频。 下面是播放:点击左边扬声器icon,开始播放刚录制的本地音频文件【也支持在线音频播放】,支持播放进度,支持切换播放模式(听筒/扬声器/耳机)等。 一、音频录制权限: 无论在做开发任何功能之前,总得先添加及申请相关权限,后续的工作才能正常进行下去。音频录制所需权限如下,而且要在代码中动态申请这些敏感权限,同意...

红日 1万+

(二)Android音频录制研究

上一篇实现了Android端文字的传输 点击打开链接,由于此系列要实现Android端语音的传输,所以这篇就先研究一下Android端语音的录制。先上效果图吧:这是主页就是几个按钮:音频录制分为文件录制和字节流录制,(1)文件采用Media Record录制和Media Player播放(2)字节流采用Audio Record录制和Audio Track播放(3)音量可视化就是实时获取音量大小,...

stormxiaofeng的博客 2091
上一篇: 获取未读信息
下一篇: Android 音频的播放之一
停止的猪头
博客等级 码龄15年 50粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值