基于AudioTrack、AudioRecord获取分贝值、录制时长、PCM解码与编码

基于AudioTrack、AudioRecord获取分贝值、录制时长、PCM解码与编码,第1张

说明:音频的录制通过AudioRecord对象进行,这里录制出来的数据没有进行编码,是属于PCM格式的数据,可以理解为Android平台上的原始的音频数据,只能通过AudioTrack对象进行播放,AudioTrack对象可以对每一帧音频进行控制,灵活性比MediaXXX强大,缺点是播放的音频数据格式必须是PCM格式,因此如果我们使用AudioTrack播放进行了编码的音频数据,则需要先进行解码成PCM格式数据,这边先来展示一下自己写的小Demo。

功能描述:1、长按开始录制音频,松开结束录制并保存成文件(录制过程中会实时显示当前的分贝值数值,并且根据分贝值更新长按控件状态以及显示录制时长(单位秒))。2、支持文件的删除、重命名、解码成PCM、编码PCM格式数据。3播放支持05倍速,原始倍速,2倍速播放,支持播放与暂停。

视频展示:

附上获取分贝值 demo

WAV格式与AAC格式的音频二者在各方面都是相差无几的,但是WAV格式有很多的播放器不支持,所以我们可以将其音频格式转换一下,那么应该用什么音频转换器呢?

1、首先打开浏览器搜索迅捷视频格式转换器,进入下载页面下载安装转换器,

2、安装完成后,点击添加文件或添加文件夹,添加WAV音频文件并打开它,

3下面的自定义按钮,点击文件夹,将输出音频AAC文件的地址改为桌面,

4、修改完成后,点击输出格式中的音频,点击WAV格式,以及赫兹值,

5、设置完成后,点击开始转换按钮,等待进度条至100%,音频就转换好了。

蓝牙耳机aac是代表蓝牙支持AAC格式的文件,手机也支持AAC传输时就可使用AAC传输了,手机不支持AAC传输就会默认使用SBC传输,AAC传输比SBC传输音质要好。

由csr推广,在设计初期,要支持APTX,就必须要购买这个软件费用,并且aptx并不是大多数手机都支持,一般支持的手机在背后都有aptx的logo ,所以虽然效果好,但是真正可以支持的设备端其实不多。

技术优势:

采用的最新蓝牙40无线传输技术能够在高速蓝牙、低耗蓝牙和经典蓝牙之间完成智能切换与配合,并能够达到长距离有效数据传输。而且,HERO还能够发挥蓝牙40的瞬间开启功能,只需3毫秒的时间即可立即享用蓝牙40带来的极速完美音质。

HERO将全面支持苹果最新标准Apt-X技术以及苹果主流音乐格式AAC ,即在一条具备高品质音频数据的无线连接上,传送高品质AAC音频数据,两者兼得,全面提升蓝牙耳机音质极限。搭载了倍受关注的蓝牙40技术。

AAC的音频文件格式有ADIF & ADTS:

总结:ADTS可以在任意帧解码,也就是说它每一帧都有头信息。ADIF只有一个统一的头,所以必须得到所有的数据后解码。且这两种的header的格式也是不同的,目前一般编码后的和抽取出的都是ADTS格式的音频流。

从图上可以总结出两点:

ADTS Frame = ADTS头+AAC ES(AAC音频数据)

ADTS头包含了AAC文件的采样率、通道数、帧数据长度等信息。ADTS头分为固定头信息和可变头信息两个部分,固定头信息在每个帧中的是一样的,可变头信息在各个帧中并不是固定值。ADTS头一般是7个字节((28+28)/ 8)长度,如果需要对数据进行CRC校验,则会有2个Byte的校验码,所以ADTS头的实际长度是7个字节或9个字节。

固定头信息:adts_fixed_header()

这部分来自雷神的博客,不过在解析的地方进行了大量的注解,方便理解解析过程。

本文中的程序是一个AAC码流解析程序。该程序可以从AAC码流中分析得到它的基本单元ADTS frame,并且可以简单解析ADTS frame首部的字段。通过修改该程序可以实现不同的AAC码流处理功能。

AAC原始码流(又称为“裸流”)是由一个一个的ADTS frame组成的。他们的结构如下图所示。

其中每个ADTS frame之间通过syncword(同步字)进行分隔。同步字为0xFFF(二进制“111111111111”)。AAC码流解析的步骤就是首先从码流中搜索0x0FFF,分离出ADTS frame;然后再分析ADTS frame的首部各个字段。本文的程序即实现了上述的两个步骤

整个程序位于simplest_aac_parser()函数中,如下所示。

AAC格式ADTS+实例剖析 >

'获取媒体的长度 00:00

Public Function GetMusicLengthString(FileName As String) As String

Dim RefStr As String 80

mciSendString "status " & FileName & " length", RefStr, 80, 0

GetMusicLengthString = CStr(Format(Int(Val(RefStr) \ 1000 \ 60), "00") & ":" & Format(Val(RefStr) \ 1000 Mod 60, "00") & Val(RefStr) \ 100 Mod 10)

End Function

音频编码acc的设置方法如下:

电脑:华为笔记本。

系统:Windows10专业版2004。

软件:风云音频处理大师2022。

1、首先,用户们可以在自己的电脑中打开风云音频处理大师软件,在这里需要将MP3音频格式转换为ACC音频文件,所以选择音频转换功能,进入到软件的主页面后即可选择两种不同的方式上传文件,这两种方式的处理方法都是很简单的,对于文件格式没有限制。

2、在完成文件上传后,可以在音频的编辑功能区域,根据自己的需求选择不同的格式,输出格式中能够随时随地调整文件的格式和输出分辨率,音频剪切则是可以对内容的时长进行修改,在完成所有设置后,需要保存设置,然后点击开始处理进行文件转换。

import librosa

import os

filedir = 'E:/data'

list = oslistdir(filedir)

time_count = 0

for file in list:

if 'wav' in file:

wav_path = filedir + '/' + file

duration = librosaget_duration(filename=wav_path)

print(duration)

time_count += duration

print('总秒数:' + str(time_count))

print('总小时数:' + str(time_count / 60 / 60))

以上就是关于基于AudioTrack、AudioRecord获取分贝值、录制时长、PCM解码与编码全部的内容,包括:基于AudioTrack、AudioRecord获取分贝值、录制时长、PCM解码与编码、为什么用wav转换aac会变长时间播放、蓝牙aac是什么意思等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9682533.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存