当前位置: 首页 > wzjs >正文

北京网站建设哪家好天室内设计培训班快速

北京网站建设哪家好天,室内设计培训班快速,济南富新网站建设,dw网页制作教程简单项目地址https://gitee.com/fahati-champion-and-runner-up/sdl_audio_test 项目目的 这是一个基于 SDL2 的音频测试项目,支持音频的录制、播放和保存。项目可以生成测试音频、录制麦克风输入,并将音频数据保存为 PCM 文件,同时支持直接播放录…

项目地址https://gitee.com/fahati-champion-and-runner-up/sdl_audio_test


项目目的

      这是一个基于 SDL2 的音频测试项目,支持音频的录制、播放和保存。项目可以生成测试音频、录制麦克风输入,并将音频数据保存为 PCM 文件,同时支持直接播放录音和调用系统工具播放。适合音频开发、设备调试和 SDL2 学习参考。


环境需求与运行

1. 安装 SDL2 开发库  

   Ubuntu/Debian 系统可执行:  

   sudo apt-get install libsdl2-dev

2. 克隆本项目代码  

   git clone git@gitee.com:fahati-champion-and-runner-up/sdl_audio_test.git

   cd test_sdl

3. 编译项目  

   ./build.sh


关键代码解读

1. 生成测试音频
作用:生成5秒的双声道440Hz正弦波音频数据,存入buffer。
void generateTestAudio(std::vector<Uint8>& buffer) {// ...参数设置...buffer.resize(numSamples * channels * bytesPerSample);Sint16* samples = reinterpret_cast<Sint16*>(buffer.data());// 生成A4音符的正弦波for (int i = 0; i < numSamples; i++) {double value = 0.5 * sin(2.0 * M_PI * freq * i / sampleRate);Sint16 sample = static_cast<Sint16>(value * 32767);for (int c = 0; c < channels; c++) {samples[i * channels + c] = sample;}}
}
2. 播放音频数据
作用:用SDL回调方式将内存中的音频数据推送到声卡播放。
void playAudio(const std::vector<Uint8>& data, int freq, int channels, SDL_AudioFormat format) {// ...PlaybackData结构体...spec.callback = [](void* userdata, Uint8* stream, int len) {// 从数据缓冲区复制音频数据到输出流// 不足部分用静音填充};// 打开音频设备,播放音频SDL_OpenAudio(&spec, nullptr);SDL_PauseAudio(0);SDL_Delay(durationMs + 500);SDL_PauseAudio(1);SDL_CloseAudio();
}
3. 录音回调
作用:每当录音设备有新数据时,将其追加到audioBuffer,并判断是否达到录音时长。
void audioCaptureCallback(void* userdata, Uint8* stream, int len) {if (isRecording) {std::lock_guard<std::mutex> lock(audioMutex);std::copy(stream, stream + len, std::back_inserter(audioBuffer));// 检查录音时长,超时则停止}
}

4. 主流程 main

  • 初始化SDL音频系统,枚举并打印可用的播放和录音设备。
  • 测试1:生成测试音频并播放,保存为generated_audio.pcm。
  • 测试2:尝试打开录音设备,录制5秒音频到audioBuffer,保存为recorded_audio.pcm。
  • 测试3:播放刚刚录制的音频。
  • 测试4:提示如何用aplay命令行工具播放录音文件。

5. 线程安全与状态控制

  • 使用std::mutex保护音频缓冲区,防止多线程访问冲突。
  • std::atomic<bool> isRecording控制录音状态。

总结
本程序实现了音频的生成、播放、录制、保存和回放,适合用于SDL音频接口的测试和学习。

运行效果

http://www.dtcms.com/wzjs/825380.html

相关文章:

  • 太平建设公司官方网站陕西建设技术学院网站
  • 河南省城乡建设厅网站专业网站运营
  • 二手车网站开发PPTasp.net做毕业设计网站
  • 手机网站 wap界面设计风格
  • 物流网站免费模板自己做的网站怎么赚钱吗
  • 电子商务网站设计书wordpress 漫画主题
  • 基于html5的移动端网站开发东莞市手机网站建设平台
  • 欢迎访问中国建设银行网上银行网站成都装修设计公司
  • 阿里巴巴做轮播网站阜宁县城乡建设局新的官方网站
  • 交流网站建设项目背景wordpress传上去
  • 个人网站 不备案wordpress链接替换
  • 网站 页面风格 建设怎样制作3d立体效果图
  • 网站租金可以做办公费吗wordpress相册标签
  • 官方网站是 优帮云做dapp开发广州
  • 建可收费的网站网站空间续费合同
  • 网站背景怎么做网站上线过程
  • 企业网站建设方案如何网站建设规范布局
  • 网站建设太金手指六六十八搜索引擎下载入口
  • 建设工程合同分类有哪些wordpress 数据库优化
  • 长春网站优化平台网站建设费入什么总账科目
  • 阿里云网站如何建设视频大石桥城乡规划建设局网站
  • 网站开发检测用户微信号深圳市大型公司
  • wordpress 建门户网站邢台微商城制作设计
  • win10建站wordpress手机网卡
  • 国外网站推荐公司网站建设需要咨询什么问题
  • 35互联做网站怎么样专业企业网站建设
  • 网站建设什么科目苏州建设银行招聘网站
  • 网站设计方案图建站宝盒v8破解版下载
  • wordpress 侧栏seo搜索引擎营销工具
  • 网络服务器价格岳阳网站优化