
说明:音频的录制通过AudioRecord对象进行,这里录制出来的数据没有进行编码,是属于PCM格式的数据,可以理解为Android平台上的原始的音频数据,只能通过AudioTrack对象进行播放,AudioTrack对象可以对每一帧音频进行控制,灵活性比MediaXXX强大,缺点是播放的音频数据格式必须是PCM格式,因此如果我们使用AudioTrack播放进行了编码的音频数据,则需要先进行解码成PCM格式数据,这边先来展示一下自己写的小Demo。
功能描述:1、长按开始录制音频,松开结束录制并保存成文件(录制过程中会实时显示当前的分贝值数值,并且根据分贝值更新长按控件状态以及显示录制时长(单位秒))。2、支持文件的删除、重命名、解码成PCM、编码PCM格式数据。3播放支持05倍速,原始倍速,2倍速播放,支持播放与暂停。
视频展示:
附上获取分贝值 demo
MediaStore中定义了一系列的数据表格,通过ContentResolver提供的查询接口,我们可以得到各种需要的信息。
下面的命令将返回所有在外部存储卡上的音乐文件的信息:
Cursor cursor = query(MediaStoreAudioMediaEXTERNAL_CONTENT_URI, null,
null, null, MediaStoreAudioMediaDEFAULT_SORT_ORDER);
得到cursor后,我们可以调用Cursor的相关方法具体的音乐信息:
歌曲ID:MediaStoreAudioMedia_ID
Int id = cursorgetInt(cursorgetColumnIndexOrThrow(MediaStoreAudioMedia_ID));
歌曲的名称 :MediaStoreAudioMediaTITLE
String tilte = cursorgetString(cursorgetColumnIndexOrThrow(MediaStoreAudioMediaTITLE));
歌曲的专辑名:MediaStoreAudioMediaALBUM
String album = cursorgetString(cursorgetColumnIndexOrThrow(MediaStoreAudioMediaALBUM));
歌曲的歌手名: MediaStoreAudioMediaARTIST
String artist = cursorgetString(cursorgetColumnIndexOrThrow(MediaStoreAudioMediaARTIST));
歌曲文件的路径 :MediaStoreAudioMediaDATA
String url = cursorgetString(cursorgetColumnIndexOrThrow(MediaStoreAudioMediaDATA));
歌曲的总播放时长 :MediaStoreAudioMediaDURATION
Int duration = cursorgetInt(cursorgetColumnIndexOrThrow(MediaStoreAudioMediaDURATION));
歌曲文件的大小 :MediaStoreAudioMediaSIZE
Int size = cursorgetLong(cursorgetColumnIndexOrThrow(MediaStoreAudioMediaSIZE));
dc@Gentoo ~/Music $ file feathermp3
feathermp3: Audio file with ID3 version 240, contains: MPEG ADTS, layer III, v1, 128 kbps, 441 kHz, JntStereo
用ffmpeg都能查看
使用audio的buffered属性,该属性返回表示音频已缓冲部分的 TimeRanges 对象。
这里假定_audio为所获取的audio标签,实现代码如下:
// 获取已缓冲部分的 TimeRanges 对象var timeRanges = _audiobuffered;
// 获取以缓存的时间
var timeBuffered = timeRagesend(timeRageslength - 1);
// 获取缓存进度,值为0到1
var bufferPercent = timeBuffered / _audioduration;
//
// 之后将bufferPercent按照自己需要的方式进行处理即可
// 处理的时候要注意浮点数精度造成的误差。
播放声音 function show() { var audio1=documentgetElementById("au"); audio1autoplay="'autoplay'"; documentallausrc= '1mp3'; }
以上就是关于基于AudioTrack、AudioRecord获取分贝值、录制时长、PCM解码与编码全部的内容,包括:基于AudioTrack、AudioRecord获取分贝值、录制时长、PCM解码与编码、Android平台中应该如何获取音乐文件的信息、linux下用什么命令行软件能获取MP3文件的码率,时间长度等信息等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)