android pcm频谱_Android下基于PCM的音频渲染

本文介绍了在Android环境下使用SDL进行PCM音频播放的步骤,包括环境准备、PCM文件处理、SDL音频播放流程及理论分析。通过SDL初始化、设置音频回调函数并填充PCM数据来实现音频播放,音频播放的实现依赖于AudioTrack。
摘要由CSDN通过智能技术生成

环境准备

请按照我之前的文章-Android下基于SDL的位图渲染,安装必要的开发环境。

实践篇

准备你要播放的PCM文件

如故你不想使用我提供的PCM,可以自己用ffmpeg转一个PCM文件,具体命令如下:

$ ffmpeg -i src.wav -f s16le -acodec pcm_s16le out.pcm

注意你需要知道这个PCM的采样率、量化位数、声道数。后续播放的时候会用到。

生成之后,将pcm文件放到手机的目录下,我使用的是/sdcard/congtou_8k_mono_16bit.pcm。

SDL音频播放流程

SDL中音频播放相对简单,只要通过SDL_OpenAudio打开设备,调用SDL_PauseAudio开始播放,播放结束调用SDL_CloseAudio。

这里说明一点,SDL2支持多音频同时播放,不过在打开音频设备的时候需要调用SDL_OpenAudioDevice。

下面是实现的代码:

struct AudioPlayContext

{

bool is_exit; // is audio play buffer empty?

FILE * fpcm;

};

void MyAudioCallback(void* userdata, Uint8* stream, int need_size)

{

AudioPlayContext * context = reinterpret_cast(userdata);

size_t actual_read = fread(stream, 1, need_size, c

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值