SDL2:PC端编译使用 -- SDL2多媒体库使用音频实例

embedded/2025/1/21 18:22:32/

更多内容:XiaoJ的知识星球


SDL2:PC端编译使用

    • 1. SDL2:PC端编译使用
      • 1.1 安装必要的依赖
      • 1.2 下载编译SDL2
      • 1.3 SDL2使用示例:Audio
      • 1.4 运行示例程序


SDL2PC_14">1. SDL2:PC端编译使用

1.1 安装必要的依赖

首先,确保安装了编译SDL2所需的依赖库:

sudo apt-get update
sudo apt-get install -y autoconf automake libtool pkg-config
sudo apt-get install libx11-dev libxext-dev libxrandr-dev libxinerama-dev libxcursor-dev
sudo apt-get install libgl1-mesa-dev libglu1-mesa-dev

SDL2_28">1.2 下载编译SDL2

wget https://www.libsdl.org/release/SDL2-2.28.4.tar.gz
tar -zxvf SDL2-2.28.4.tar.gzcd SDL2-2.28.4
mkdir build_pc
cd build_pccmake .. \-DCMAKE_INSTALL_PREFIX=$(pwd)/_install_pc \-DSDL_STATIC=ON \-DSDL_SHARED=OFFmake
make install

SDL2Audio_49">1.3 SDL2使用示例:Audio

(1)main.cpp示例:

  • 使用SDL2从音频设备获取输入数据,并使用printf打印相关信息。
#include <SDL2/SDL.h>
#include <stdio.h>// 音频回调函数
void audioCallback(void* userdata, Uint8* stream, int len) {// 这里可以处理音频数据,例如保存到文件或进行实时处理// 本示例中不进行处理,仅打印信息printf("Captured %d bytes of audio data.\n", len);
}int main(int argc, char* argv[]) {// 初始化SDL音频子系统if (SDL_Init(SDL_INIT_AUDIO) < 0) {printf("SDL could not initialize! SDL_Error: %s\n", SDL_GetError());return -1;}// 定义音频规格SDL_AudioSpec want, have;SDL_zero(want);want.freq = 44100;  // 采样率want.format = AUDIO_S16SYS;  // 采样格式want.channels = 2;  // 双声道want.samples = 1024;  // 缓冲区大小want.callback = audioCallback;  // 指定音频回调函数want.userdata = nullptr;// 打开音频设备SDL_AudioDeviceID deviceId = SDL_OpenAudioDevice(nullptr, 1, &want, &have, 0);if (deviceId == 0) {printf("SDL could not open audio device! SDL_Error: %s\n", SDL_GetError());SDL_Quit();return -1;}// 检查音频规格是否符合预期if (have.freq != want.freq || have.format != want.format || have.channels != want.channels) {printf("Audio specification mismatch.\n");SDL_CloseAudioDevice(deviceId);SDL_Quit();return -1;}// 播放音频SDL_PauseAudioDevice(deviceId, 0);// 持续捕获音频数据printf("Capturing audio... Press Enter to stop.\n");getchar();// 停止音频捕获SDL_PauseAudioDevice(deviceId, 1);// 关闭音频设备SDL_CloseAudioDevice(deviceId);// 退出SDLSDL_Quit();return 0;
}

(2)编译

使用Makefile编译:

SDL2_DIR := /home/archermind/Env/Tools/SDL2-2.28.4/build_pc/_install_pc/
SDL2_INCLUDE := \-I${SDL2_DIR}/include \-I${SDL2_DIR}/include/SDL2
SDL2_LIB := ${SDL2_DIR}/lib/CXX := g++
LDFLAGS := -L$(SDL2_LIB) -lSDL2
CXXFLAGS := -g -O3 -fPIC -std=gnu++20TARGET := audio_capture
$(TARGET):$(CXX) $(CXXFLAGS) $(SDL2_INCLUDE) -o main.cpp.o -c main.cpp$(CXX) $(CXXFLAGS) -o $(TARGET) main.cpp.o $(LDFLAGS)clean:rm -f $(TARGET) *.o

生成audio_capture可执行文件,执行编译:make

1.4 运行示例程序

在终端中运行编译好的程序:

./audio_capture

声明:资源可能存在第三方来源,若有侵权请联系删除!


http://www.ppmy.cn/embedded/155838.html

相关文章

linux ssh 增加访问端口

在 Linux 系统中&#xff0c;SSH 默认使用 22 端口。为了增强安全性或满足特定需求&#xff0c;可以通过修改 SSH 配置来增加或更改 SSH 访问端口。以下是具体步骤&#xff1a; 1. 修改 SSH 配置文件 SSH 的配置文件通常位于 /etc/ssh/sshd_config。使用文本编辑器&#xff08…

EXCEL+Python搞定数据处理(第一部分:Python入门-第2章:开发环境)

一、Anaconda Python发行版 1.安装 在清华大学镜像网站下下载软件 Index of /anaconda/archive/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirrorhttps://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/?CM&ODhttps://mirrors.tuna.tsinghua.edu.cn/anaconda…

Linux下PostgreSQL-12.0安装部署详细步骤

一、安装环境 postgresql-12.0 CentOS-7.6 注意&#xff1a;确认linux系统可以正常连接网络&#xff0c;因为在后面需要添加依赖包。 二、pg数据库安装包下载 下载地址&#xff1a;PostgreSQL: File Browser 选择要安装的版本进行下载&#xff1a; 三、安装依赖包 在要安…

SparkSQL数据模型综合实践

文章目录 1. 实战概述2. 实战步骤2.1 创建数据集2.2 创建数据模型对象2.2.1 创建常量2.2.2 创建加载数据方法2.2.3 创建过滤年龄方法2.2.4 创建平均薪水方法2.2.5 创建主方法2.2.6 查看完整代码 2.3 运行程序&#xff0c;查看结果 3. 实战小结 1. 实战概述 在本次实战中&#…

使用nginx搭建通用的图片代理服务器,支持http/https/重定向式图片地址

从http切换至https 许多不同ip的图片地址需要统一进行代理 部分图片地址是重定向地址 nginx配置 主站地址&#xff1a;https://192.168.123.100/ 主站nginx配置 server {listen 443 ssl;server_name localhost;#ssl证书ssl_certificate ../ssl/ca.crt; #私钥文件ssl_ce…

【MySQL篇】使用mysqldump导入报错Unknown collation: ‘utf8mb4_0900_ai_ci‘的问题解决

&#x1f4ab;《博主介绍》&#xff1a;✨又是一天没白过&#xff0c;我是奈斯&#xff0c;从事IT领域✨ &#x1f4ab;《擅长领域》&#xff1a;✌️擅长阿里云AnalyticDB for MySQL(分布式数据仓库)、Oracle、MySQL、Linux、prometheus监控&#xff1b;并对SQLserver、NoSQL(…

精通Python (10)

一&#xff0c;基于tkinter模块的GUI GUI是图形用户界面的缩写&#xff0c;图形化的用户界面对使用过计算机的人来说应该都不陌生&#xff0c;在此也无需进行赘述。Python默认的GUI开发模块是tkinter&#xff08;在Python 3以前的版本中名为Tkinter&#xff09;&#xff0c;从这…

Linux:EXT2文件系统

✨✨所属专栏&#xff1a;Linux✨✨ ✨✨作者主页&#xff1a;嶔某✨✨ 理解硬件 磁盘 磁盘&#xff0c;顾名思义就是用磁性来存储信息的。磁盘是一种永久性存储介质&#xff0c;在计算机中&#xff0c;磁盘几乎是唯一的机械设备。与磁盘相对应的就是内存&#xff0c;但是内存…