MPP 音频类功能
音频采集功能
Sample 描述
Sample 名称 | sample_ai |
---|---|
功能概述 | 根据配置参数采集对应的pcm数据,并写入到文件中保存。 |
组件依赖 | mpp_aio |
Sample 路径 | platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/sample_ai |
输入文件 | 无 |
输出文件 | /mnt/extsd/test.wav |
参数配置
pcm_file_path:指定目标pcm文件的路径,该文件是包含wave头的wav格式文件。
pcm_sample_rate:指定采样率,通常设置为8000。
pcm_channel_cnt:指定通道数目,通常为1或2。
pcm_bit_width:指定位宽,必须设置为16。
pcm_frame_size:指定frame_size,此值可不指定。
pcm_cap_duration:指定测试时间。
测试通路
测试指令
./sample_ai -path ./sample_ai.conf
退出测试
测试时间达到指定时间后,自动退出测试。
测试结果
1. 测试程序运行正常,测试过程没有异常打印。
2. 生成pcm 文件test.wav播放正常。
音频输出功能
Sample 描述
Sample 名称 | sample_ao |
---|---|
功能概述 | 根据配置参数读取pcm数据,然后播放声音,从耳机口或喇叭输出声音。 |
组件依赖 | mpp_aio |
Sample 路径 | platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/sample_ao |
输入文件 | /mnt/extsd/test.wav |
输出文件 | /mnt/extsd/SampleAo_AoSaveFile.pcm |
参数配置
pcm_file_path:指定音频pcm文件的路径,该文件是包含wave头(大小为44Bytes)的wav格式文件,如果找不到这种格式文件,可以用sample_ai生成一个。
pcm_sample_rate:指定采样率,设置为文件中的采样率的值。
pcm_channel_cnt:指定通道数目,设置为文件中的通道数。
pcm_bit_width:指定位宽,设置为文件中的位宽。
pcm_frame_size:固定指定为1024。
ao_volume:输出的音量,范围:0~100。
测试通路
测试指令
./sample_ao -path ./sample_ao.conf
退出测试
播放完wav 文件后会自动退出测试。
测试结果
1. 测试程序运行正常,测试过程没有异常打印。
2. 喇叭播放声音正常。同时,抓取pcm 文件SampleAo_AoSaveFile.pcm。
采用音频输出同步功能
Sample 描述
Sample 名称 | sample_aoSync |
---|---|
功能概述 | 演示接口AW_MPI_AO_SendFrameSync 的使用方法,采用同步的方式send pcm frame。而sample_ao 是采用异步的方式。 根据配置参数读取pcm数据,然后播放声音,从耳机口输出声音。 支持硬件音量调节和软件音量调节。 |
组件依赖 | mpp_aio |
Sample 路径 | platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/sample_aoSync |
输入文件 | /mnt/extsd/test.wav |
输出文件 | 无 |
参数配置
pcm_file_path:指定音频pcm文件的路径,该文件是包含wave头(大小为44Bytes)的wav格式文件,如果找不到这种格式文件,可以用sample_ai生成一个。
pcm_frame_size:指定每次取pcm 的帧数,用来与其他参数配合决定分配pcm frame buf 的大小。
ao_volume:指定音量大小。范围[0, 100]
ao_softvolume:设置软增益音量,使用alsa的softvol插件进一步增大音量,范围[0, 100]
test_duration:指定测试时间,单位:秒。
parse_wav_header_enable:指定是否使用sample 内部wav header 的解析。
注意:如果使能,wav 文件在sample 内部会自己解析这些参数,并覆盖下面指定的参数值(pcm_sample_rate、pcm_channel_cnt、pcm_bit_width)。
pcm_sample_rate:指定采样率,设置为文件中的采样率的值。如果parse_wav_header_enable为1,则优先使用解析的结果。
pcm_channel_cnt:指定通道数目,设置为文件中的通道数。如果parse_wav_header_enable为1,则优先使用解析的结果。
pcm_bit_width:指定位宽,设置为文件中的位宽。如果parse_wav_header_enable为1,则优先使用解析的结果。
测试通路
测试指令
./sample_aoSync -path ./sample_aoSync.conf
退出测试
播放完wav 文件后会自动退出测试。
测试结果
1. 测试程序运行正常,测试过程没有异常打印。
2. 喇叭播放声音正常。
读取 PCM 数据播放功能
Sample 描述
Sample 名称 | sample_ao_resample_mixer |
---|---|
功能概述 | 根据配置参数读取pcm数据,然后播放声音,从耳机口或喇叭输出声音。 可以测试resample及混音功能。 |
组件依赖 | mpp_aio |
Sample 路径 | platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/uncommonly_samples/sample_ao_resample_mixer |
输入文件 | /mnt/extsd/speech.wav /mnt/extsd/48000_ch2_bit16.wav |
输出文件 | 无 |
参数配置
pcm_file_path:指定音频pcm文件的路径,该文件是包含wave头(大小为44Bytes)的wav格式文件,如果找不到这种格式文件,可以用sample_ai生成一个。
pcm_sample_rate:指定采样率,设置为文件中的采样率的值。
pcm_channel_cnt:指定通道数目,设置为文件中的通道数。
pcm_bit_width:指定位宽,设置为文件中的位宽。
pcm_frame_size:固定指定为1024。
pcm_second_chl_en: 是否启动第二路ao,以测试resample及混音功能。
pcm_file_path_slave:指定音频pcm文件的路径,该文件是包含wave头(大小为44Bytes)的wav格式文件,如果找不到这种格式文件,可以用sample_ai生成一个。
pcm_sample_rate_slave:指定采样率,设置为文件中的采样率的值。
pcm_channel_cnt_slave:指定通道数目,设置为文件中的通道数。
pcm_bit_width_slave:指定位宽,设置为文件中的位宽。
pcm_frame_size_slave:固定指定为1024。
测试通路
测试指令
./sample_ao_resample_mixer -path ./sample_ao_resample_mixer.conf
退出测试
播放完wav 文件后会自动退出测试。
测试结果
1. 测试程序运行正常,测试过程没有异常打印。
2. 喇叭播放声音正常。
回声消除功能
Sample 描述
Sample 名称 | sample_ao2ai_aec |
---|---|
功能概述 | 本sample主要用来演示aec功能的使用。 sample创建两路ai,一路通过tunnel mode 绑定于audio enc,直接aac编码,并保存编码后的数据;一路采用非tunnel模式,由app获取ai数据,做其他处理。 sample运行过程如下: 根据配置参数读取pcm数据,然后播放声音。同时ai采集音频数据,并做aec回声消除处理,后送aac编码或直接获取aec后的数据用做他用。 |
组件依赖 | mpp_aenc mpp_aio |
Sample 路径 | platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/uncommonly_samples/sample_ao2ai_aec |
输入文件 | /mnt/extsd/sample_ai/sample_ai_16000_ch1_bit16_aec_20.wav |
输出文件 | /mnt/extsd/sample_ao2ai/tmp/ai_cap.pcm /mnt/extsd/sample_ao2ai/tmp/ai_cap.aac |
参数配置
pcm_src_path:指定音频pcm文件的路径,该文件是包含wave头(大小为44Bytes)的wav格式文件,如果找不到这种格式文件,可以用sample_ai生成一个。
pcm_dst_path:指定目标文件的路径,该文件是ai组件采集音频生成的文件,不带wav头,如果想听该音频,需手动加上wave头。
aac_dst_path: 指定编码后aac目标文件路径,该文件为aac raw data。
pcm_sample_rate:指定采样率,设置为文件中的采样率的值,启用aec后,sample rate须为8000.
pcm_channel_cnt:指定通道数目,设置为文件中的通道数,启用aec后,sample rate须为1.
pcm_bit_width:指定位宽,设置为文件中的位宽,启用aec后,bit_width须为16.
pcm_frame_size:帧大小,固定指定为1024。
aec_en:是否启动aec回声消除功能。1:启动;0:不启用。
aec_delay_ms: 启用aec回声消除功能时,设置的延迟时间,主要给aec回声消除算法使用,建议先设置为0。
测试通路
测试指令
./sample_ao2ai_aec -path ./sample_ao2ai_aec.conf
退出测试
按“crtl + c”退出测试。
测试结果
1. 测试程序运行正常,测试过程没有异常打印。
2. 喇叭播放没有回声。
回声消除,重采样,混音功能
Sample 描述
Sample 名称 | sample_ao2ai_aec_rate_mixer |
---|---|
功能概述 | 演示回声消除功能。 sample创建两路ai,一路通过tunnel mode 绑定于audio enc,直接aac编码,并保存编码后的数据; 一路采用非tunnel模式,由app获取ai数据,做其他处理。 sample运行过程如下: 根据配置参数读取pcm数据,然后播放声音。同时ai采集音频数据, 并做aec回声消除处理,后送aac编码或直接获取aec后的数据用做他用。 |
组件依赖 | mpp_aenc mpp_aio |
Sample 路径 | platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/uncommonly_samples/sample_ao2ai_aec_rate_mixer |
输入文件 | 第一路:/mnt/extsd/speech.wav 第二路:/mnt/extsd/48000_ch2_bit16.wav |
输出文件 | /mnt/extsd/ai_cap.pcm /mnt/extsd/ai_cap.aac |
参数配置
第一路音频数据文件及对应参数:
pcm_src_path:指定音频pcm文件的路径,该文件是包含wave头(大小为44Bytes)的wav格式文件,如果找不到这种格式文件,可以用sample_ai生成一个。
pcm_dst_path:指定目标文件的路径,该文件是ai组件采集音频生成的文件,不带wav头,如果想听该音频,需手动加上wave头。
aac_dst_path: 指定编码后aac目标文件路径,该文件为aac raw data。
pcm_sample_rate:指定采样率,设置为文件中的采样率的值,启用aec后,sample rate须为8000.
pcm_channel_cnt:指定通道数目,设置为文件中的通道数,启用aec后,sample rate须为1.
pcm_bit_width:指定位宽,设置为文件中的位宽,启用aec后,bit_width须为16.
pcm_frame_size:固定指定为1024。
aec_en: 1:启动aec回声消除功能;0:不启用aec回声消除功能;
aec_delay_ms: 启用aec回声消除功能时,设置的延迟时间,主要给aec回声消除算法使用,建议先设置为0。
第二路音频数据文件及对应参数:
pcm_src_path_slave:指定音频pcm文件的路径。
pcm_sample_rate_slave:指定采样率。
pcm_channel_cnt_slave:指定通道数目。
pcm_bit_width_slave:指定位宽。
pcm_frame_size_slave:指定帧大小,固定指定为1024。
测试通路
测试指令
./sample_ao2ai_aec_rate_mixer -path ./sample_ao2ai_aec_rate_mixer.conf
退出测试
按“crtl + c”退出测试。
测试结果
1. 测试程序运行正常,测试过程没有异常打印。
2. 喇叭播放没有回声。
回声消除增强功能
Sample 描述
Sample 名称 | sample_aec |
---|---|
功能概述 | 本sample主要用来演示aec(回声消除)功能的使用。 sample创建ao,播放音频文件作为回声。 sample创建ai,接收外界声音(其中必然包括ao播放出的音频)。mpi_ai启动回声消除功能。 sample从mpi_ai组件获取采集的数据保存为wav文件,在mpi_ai打开回声消除的情况下,wav文件应已过滤了ao播放的音乐。如果没有打开回声消除,wav文件会混合外界说话声和ao播放的音乐。 sample也包含了DRC(软件增强音量)的测试。 启用aec功能的方式如下: 启用aec功能并不复杂,相比于不启用aec功能的操作,只是在设置ai dev属性时多了两个属性参数: 1) ai_aec_en:是否使能aec。1:enable;0:disable。 2) aec_delay_ms: aec算法用delay参数。单位:ms,建议先设为0。 然后调用api:AW_MPI_AI_SetPubAttr()。 音频回声消除 内核驱动采集播放出的音频数据,提供接口供获取。AI 通道获取播放的音频数据作为音频参考帧,利用回声消除算法,消除采集的音频数据中的相同音频帧。 |
组件依赖 | mpp_aio |
Sample 路径 | platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/sample_aec |
输入文件 | /mnt/extsd/sample_aoref_8000_ch1_bit16_aec_30s.wav |
输出文件 | /mnt/extsd/ai_cap.wav |
参数配置
pcm_src_path:指定音频pcm文件的路径,该文件是包含wave头(大小为44Bytes)的wav格式文件,如果找不到这种格式文件,可以用sample_ai生成一个。
pcm_dst_path:指定目标文件的路径,该文件是ai组件采集音频生成的文件,可配置是否带wav头,如果想在PC上播放音频文件,需带wav头。
pcm_sample_rate:指定采样率,设置为文件中的采样率的值,启用aec后,sample rate须为8000.
pcm_channel_cnt:指定通道数目,设置为文件中的通道数,启用aec后,sample rate须为1.
pcm_bit_width:指定位宽,设置为文件中的位宽,启用aec后,bit_width须为16.
pcm_frame_size:固定指定为1024。
aec_en: 1:启动aec回声消除功能;0:不启用aec回声消除功能;
aec_delay_ms: 启用aec回声消除功能时,设置的延迟时间,主要给aec回声消除算法使用,建议先设置为0;
add_wav_header:保存pcm文件是否需要加wav头。
测试通路
测试指令
./sample_aec -path ./sample_aec.conf
退出测试
按“crtl + c”退出测试。
测试结果
1. 测试程序运行正常,测试过程没有异常打印。
2. 喇叭播放没有回声。
音频编码功能
Sample 描述
Sample 名称 | sample_aenc |
---|---|
功能概述 | 从pcm文件(如:test.wav)中读取每一桢的数据,进行编码,然后保存为aac/mp3/adpcm/pcm/g711a/g711u/g726格式的压缩文件。 |
组件依赖 | mpp_aenc mpp_aio |
Sample 路径 | platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/sample_aenc |
输入文件 | /mnt/extsd/test.wav |
输出文件 | /mnt/extsd/test.aac |
参数配置
sample_aenc_src_file:指定原始pcm文件的路径,该文件是包含wave头的wav格式文件。
sample_aenc_dst_file:指定编码后生成的aac或mp3或其它格式文件的路径。注意指定的后缀名必须小写,用于指定编码方式,否则按aac格式来编码。
测试通路
测试指令
./sample_aenc -path ./sample_aenc.conf
退出测试
处理完wav 文件后,会自动退出测试。
测试结果
1. 测试程序运行正常,测试过程没有异常打印。
2. 音频编码生成文件test.aac 播放正常。
音频采集和编码功能
Sample 描述
Sample 名称 | sample_ai2aenc |
---|---|
功能概述 | mic录音送入编码器,取得每一帧数据的编码,写到文件中。 目前支持aac, pcm, g711a/u, g726a/u编码,以裸码流形式存储在文件中。 文件后缀名以编码格式命名,例如test.aac, test.pcm, test.g711a, test.g711u等。 |
组件依赖 | mpp_aenc mpp_aio |
Sample 路径 | platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/sample_ai2aenc |
输入文件 | 无 |
输出文件 | /mnt/extsd/test.aac |
参数配置
dst_file:生成文件路径
encoder_type:编码类型,如“aac”
sample_rate:mic录音采样值
channel_cnt: 录音通道数 (1 or 2)
bit_width:录音采样位宽
frame_size: 帧大小 (如:1024 / 2048)
test_duration: sample一次测试时间(单位:s)
测试通路
测试指令
./sample_ai2aenc -path ./sample_ai2aenc.conf
退出测试
测试时间达到指定时间后,自动退出测试。
测试结果
1. 测试程序运行正常,测试过程没有异常打印。
2. 生成编码文件test.aac播放正常。
音频采集、编码和封装功能
Sample 描述
Sample 名称 | sample_ai2aenc2muxer |
---|---|
功能概述 | 根据配置参数采集对应的pcm数据,然后根据配置信息将pcm数据编码,最后写入到文件中进行保存。 |
组件依赖 | mpp_aenc mpp_aio |
Sample 路径 | platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/sample_ai2aenc2muxer |
输入文件 | 无 |
输出文件 | /mnt/extsd/SampleAi2Aenc2Muxer_AiSaveFile.pcm /mnt/extsd/sample_ai2aenc2muxer_mono_16000.aac |
参数配置
dst_file:指定目标pcm文件的路径,该文件是包含wave头的wav格式文件。
cap_dura:指定采集时间长度,单位:s。
chn_cnt:指定通道数目,通常为1或2。
bit_width:指定位宽,必须设置为16。
smp_rate:指定采样率,通常设置为8000。
bitRate:编码的码率,单位:bps。
测试通路
测试指令
./sample_ai2aenc2muxer -path ./sample_ai2aenc2muxer.conf
退出测试
测试时间达到指定时间后,自动退出测试。
测试结果
1. 测试程序运行正常,测试过程没有异常打印。
2. 生成文件sample_ai2aenc2muxer_mono_16000.aac 播放正常,同时抓取pcm 文件SampleAi2Aenc2Muxer_AiSaveFile.pcm。
音频解码功能
Sample 描述
Sample 名称 | sample_adec |
---|---|
功能概述 | 从已编码的ADTS格式的AAC文件(如:test.aac)中读取每一桢的数据,进行解码,然后保存为WAV格式的pcm文件。 或者从裸码流文件(如g711a/u, g726a/u)中读取固定大小的数据(g711a/u是一次读取1024字节,g726a/u是一次读取512字节), 进行解码,然后保存为wav格式的pcm文件。 |
组件依赖 | mpp_adec mpp_aio |
Sample 路径 | platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/uncommonly_samples/sample_adec |
输入文件 | /mnt/extsd/test.aac |
输出文件 | /mnt/extsd/test.wav |
参数配置
audio_file_path:指定原始已压缩的音频文件的路径,目前支持aac, g711a/u, g726a/u。
pcm_file_path:指定解码后生成的pcm文件的路径。
测试通路
测试指令
./sample_adec -path ./sample_adec.conf
退出测试
aac 文件处理完,会自动退出测试。
测试结果
1. 测试程序运行正常,测试过程没有异常打印。
2. 音频解码生成目标文件test.wav 播放正常。
音频解码输出功能
Sample 描述
Sample 名称 | sample_adec2ao |
---|---|
功能概述 | 从已编码的ADTS格式的AAC文件(如:test.aac)中读取每一桢的数据,进行解码,然后通过ao输出。 |
组件依赖 | mpp_adec mpp_aio |
Sample 路径 | platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/uncommonly_samples/sample_adec2ao |
输入文件 | /mnt/extsd/test.aac |
输出文件 | 无 |
参数配置
audio_file_path: 指定音频文件路径。
pcm_sample_rate: 指定pcm的采样率,单位: Hz。默认16000,表示16000Hz。对于g711和g726需要配置该值。
pcm_channel_cnt: 指定pcm通道数,默认1,表示单通道。对于g711和g726需要配置该值。
audio_data_type: 指定音频数据类型(g711a:19;g711u:20;aac:37;g726a:21,g726u:2000)。
测试通路
测试指令
./sample_adec2ao -path ./sample_adec2ao.conf
退出测试
音频文件处理完,会自动退出测试。
测试结果
1. 测试程序运行正常,测试过程没有异常打印。
2. 音频解码后,输出声音正常。
视频文件分离音频数据帧并解码
Sample 描述
Sample 名称 | sample_demux2adec |
---|---|
功能概述 | 根据配置参数读取视频文件,解封装,获取到音频数据后,送解码器,保存为wav文件。 |
组件依赖 | mpp_demuxer mpp_adec |
Sample 路径 | platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/sample_demux2adec |
输入文件 | /mnt/extsd/test.mp4 |
输出文件 | /mnt/extsd/output.wav |
参数配置
src_file:指定mp4视频文件的路径。
dst_file:指定wav音频文件的路径。
测试通路
测试指令
./sample_demux2adec -path ./sample_demux2adec.conf
退出测试
测试完文件test.mp4,可以自动退出测试。
测试结果
1. 测试程序运行正常,测试过程没有异常打印。
2. 生成音频文件output.wav 播放正常。
视频文件分离音频数据帧并解码播放
Sample 描述
Sample 名称 | sample_demux2adec2ao |
---|---|
功能概述 | 根据配置参数读取视频文件,解封装,获取到音频数据后,送解码器,然后播放出声音,从耳机口或喇叭输出声音。 |
组件依赖 | mpp_demuxer mpp_adec mpp_aio |
Sample 路径 | platform/allwinner/eyesee-mpp/middleware/sun300iw1/sample/sample_demux2adec2ao |
输入文件 | /mnt/extsd/test.mp4 |
输出文件 | 无 |
参数配置
src_file:指定mp4视频文件的路径。
测试通路
测试指令
./sample_demux2adec2ao -path ./sample_demux2adec2ao.conf
退出测试
测试完文件test.mp4,可以自动退出测试。
测试结果
1. 测试程序运行正常,测试过程没有异常打印。
2. 喇叭播放声音,声音正常。