b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

Android录音并播放(mp3或amr格式)

电脑杂谈  发布时间:2019-07-20 14:11:14  来源:网络整理

.amr手机上用什么播放_手机怎样播放amr格式_手机amr格式的播放器

Android项目中媒体是很头疼的一个问题,不仅仅因为处理起来很麻烦,而且不同的手机差别很大(和硬件,系统都有关系),今天就总结一下Android中的录音和播放,可保存成mp3或amr格式

小米1s,三星,酷派8721移动版 测试通过

1、首先说一下amr格式和mp3格式的区别

----------------------------------------------------------------------------------------------

手机amr格式的播放器_.amr手机上用什么播放_手机怎样播放amr格式

台电 m33 基本规格 产品名称 台电 m33 接口类型 usb2.0 音乐格式 支持mp3、wma、flac、ape、ogg格式音频播放 储存介质 闪存式 外接扩展卡 支持最高32gb的micro sd卡 台电 m33 功能参数 fm调频 支持 设计类型 收录放 视频格式 支持mp3、wma、flac、ape、ogg格式音频播放 图片浏览 支持jpg格式图片浏览 电子书功能 支持txt格式电子书阅读 录音功能 内置mic支持录音功能 台电 m33 电力规格 电池类型 锂 电池池 台电 m33 外观参数 屏幕面板 tft彩屏 颜色 黑色 屏幕尺寸 3.0英寸 屏幕分辨率 432×。测试最大支持640*480照片输出,同时支持视频拍摄手机amr格式的播放器,具体拍摄时间根据内存储存空间而定【内存大小】内置87.7m内存芯片,支持最大外插8gb内存卡扩展内存【数据传输】u盘/usb数据线连接,蓝牙立体声【图像格式】jpg、gif【游戏平台】java2.0、java格式任意下载,并支持安装在内存上,内置重力感应器,极大的增加了游戏的趣味性【艾米3g视频】内置艾米3g视频通话软件,可实山词霸、蓝牙功能、gprs下载、mms彩信、背景更换、四频简洁时尚外观,java2.0,滑动,日历,备忘录,闹钟,世界时间,电子书,移动qq,股票,msn。文字语音支持四川话.粤语等.陕西话等地方特色语言,你可以通过调节语速,发音人,音频格式,音量大小等相关参数,让生成的音频文件更合你意. 文字语音使用语音自动转换语音之前可自定义引擎类型.文本编码.文本类型.音频格式.音频编码.压缩等级.发音人.背景音.语速.音量等选项.通过该软件制作免费的语音可以用作mc喊麦说话开场,也可以录制文字表白情书.生成的语音文件在软件运行目录。

mp3是一个实用的有损音频压缩编码,以此获得较高的压缩和较小的体积。

所以录音优先选择amr格式,微信生成的语音文件就是amr格式的。

2、录音播放的步骤

手机怎样播放amr格式_手机amr格式的播放器_.amr手机上用什么播放

---------------------------------------------------------------------------------------

Android api中可以录音并播放的类主要有2个,一个是AudioRecord,另一个是MediaRecorder,这篇文章我们用AudioRecord,至于他们的区别,在什么情况下用那个,大家可以自行百度。

1)实例化一个AudioRecord

2)设置录音频率,录制通道,编码格式等参数

.amr手机上用什么播放_手机amr格式的播放器_手机怎样播放amr格式

3)设置录制缓存区大小

4)创建一个文件,用于保存录制的内容

5)打开一个流,指向创建的文件

6)开始录制

手机怎样播放amr格式_手机amr格式的播放器_.amr手机上用什么播放

先定义一些音频录制的参数

private boolean isRecording = true, isPlaying = false; // 标记
private int frequence = 16000;// 8000;
private int channelConfig = AudioFormat.CHANNEL_CONFIGURATION_MONO;
private int audioEncoding = AudioFormat.ENCODING_PCM_16BIT;
在录制之前,先要判断一个sd卡是否存在:
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))// 手机有SD卡的情况
		{
			// 在这里我们创建一个文件,用于保存录制内容
			fpath = new File(Environment.getExternalStorageDirectory()
					.getAbsolutePath() + "/test_record/");
			fpath.mkdirs();// 创建文件夹
		} else// 手机无SD卡的情况
		{
			//返回在文件系统上应用程序特定的缓存目录的绝对路径
			fpath = this.getCacheDir();
		}
		try {
			// 创建临时文件,注意这里的格式为.pcm  .amr  .mp3
			audioFile = File.createTempFile("recording", ".amr", fpath);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

这儿我们将事先定义好的参数作为AudioRecord的构造方法的参数传递进去,你也可以先new一个AudioRecord对象手机amr格式的播放器,然后设置它的录制参数。

class RecordTask extends AsyncTask<Void, Integer, Void> {
		@Override
		protected Void doInBackground(Void... arg0) {
			isRecording = true;
			try {
				// 开通输出流到指定的文件
				DataOutputStream dos = new DataOutputStream(
						new BufferedOutputStream(
								new FileOutputStream(audioFile)));
				// 根据定义好的几个配置,来获取合适的缓冲大小
				int bufferSize = AudioRecord.getMinBufferSize(frequence,
						channelConfig, audioEncoding);
				// 实例化AudioRecord
				AudioRecord record = new AudioRecord(
						MediaRecorder.AudioSource.MIC, frequence,
						channelConfig, audioEncoding, bufferSize);
				// 定义缓冲
				short[] buffer = new short[bufferSize];
				// 开始录制
				record.startRecording();
				int r = 0; // 存储录制进度
				// 定义循环,根据isRecording的值来判断是否继续录制
				while (isRecording) {
					// 从bufferSize中读取字节,返回读取的short个数
					// 这里老是出现buffer overflow,不知道是什么原因,试了好几个值,都没用,TODO:待解决
					int bufferReadResult = record
							.read(buffer, 0, buffer.length);
					// 循环将buffer中的音频数据写入到OutputStream中
					for (int i = 0; i < bufferReadResult; i++) {
						dos.writeShort(buffer[i]);
					}
					publishProgress(new Integer(r)); // 向UI线程报告当前进度
					r++; // 自增进度值
				}
				// 录制结束
				record.stop();
				Log.v("The DOS available:", "::" + audioFile.length());
				dos.close();
			} catch (Exception e) {
				// TODO: handle exception
			}
			return null;
		}
		// 当在上面方法中调用publishProgress时,该方法触发,该方法在I线程中被执行
		protected void onProgressUpdate(Integer... progress) {
			stateView.setText(progress[0].toString());
		}
		protected void onPostExecute(Void result) {
			btnStop.setEnabled(false);
			btnStart.setEnabled(true);
			btnPlay.setEnabled(true);
			btnFinish.setEnabled(false);
		}
		protected void onPreExecute() {
			// stateView.setText("正在录制");
			btnStart.setEnabled(false);
			btnPlay.setEnabled(false);
			btnFinish.setEnabled(false);
			btnStop.setEnabled(true);
		}
	}

将音频录制的过程放到线程中取执行,然后更新ui给用户。接下来就是播放了,仍然程中播放

class PlayTask extends AsyncTask<Void, Integer, Void> {
		@Override
		protected Void doInBackground(Void... arg0) {
			isPlaying = true;
			int bufferSize = AudioTrack.getMinBufferSize(frequence,
					channelConfig, audioEncoding);
			short[] buffer = new short[bufferSize / 4];
			try {
				// 定义输入流,将音频写入到AudioTrack类中,实现播放
				DataInputStream dis = new DataInputStream(
						new BufferedInputStream(new FileInputStream(audioFile)));
				// 实例AudioTrack
				AudioTrack track = new AudioTrack(AudioManager.STREAM_MUSIC,
						frequence, channelConfig, audioEncoding, bufferSize,
						AudioTrack.MODE_STREAM);
				// 开始播放
				track.play();
				// 由于AudioTrack播放的是流,所以,我们需要一边播放一边读取
				while (isPlaying && dis.available() > 0) {
					int i = 0;
					while (dis.available() > 0 && i < buffer.length) {
						buffer[i] = dis.readShort();
						i++;
					}
					// 然后将数据写入到AudioTrack中
					track.write(buffer, 0, buffer.length);
				}
				// 播放结束
				track.stop();
				dis.close();
			} catch (Exception e) {
				// TODO: handle exception
			}
			return null;
		}
		protected void onPostExecute(Void result) {
			btnPlay.setEnabled(true);
			btnFinish.setEnabled(false);
			btnStart.setEnabled(true);
			btnStop.setEnabled(false);
		}
		protected void onPreExecute() {
			btnStart.setEnabled(false);
			btnStop.setEnabled(false);
			btnPlay.setEnabled(false);
			btnFinish.setEnabled(true);
		}
	}

2、同时您也能转换以上视频格式文件到avi, divx, xvid, dvd, svcd, vcd, mpeg-1, mpeg-2, wmv, asf, vob, mov 等格式. 利用极其易用的操作界面您能够从视频文件中提取音频并转换成mp3, ac3, aac, m4a等音频格式。电子书功能tv-out视频输出播放模式 多种循环模式 音效模式 多种eq音效音频录制 内置mic,支持mp3格式录音功能 同步歌词 支持。支持网上几乎所有音频格式,如mp2,mp3,aac,amr,wma,ogg,wav(pcm,dsp,gsm,adpcm),g721,g723,g726,vox,alaw,ulaw等常见的音频格式间的转换,并支持抓取cd光盘中的音乐文件转换为mp3,wav,wma和ogg格式文件,同时可以设置音频参数,如音频采样率、音频品质等,来控制输出文件大小和音质清晰度。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/bofangqi/article-114479-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...