SDL2:PC端编译使用
SDL2:PC端编译使用
- 1. SDL2:PC端编译使用
- 1.1 安装必要的依赖
- 1.2 下载编译SDL2
- 1.3 SDL2使用示例:Audio
- 1.4 运行示例程序
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
1.2 下载编译SDL2
wget https://www.libsdl.org/release/SDL2-2.28.4.tar.gz
tar -zxvf SDL2-2.28.4.tar.gz
cd SDL2-2.28.4
mkdir build_pc
cd build_pc
cmake .. \
-DCMAKE_INSTALL_PREFIX=$(pwd)/_install_pc \
-DSDL_STATIC=ON \
-DSDL_SHARED=OFF
make
make install
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);
// 退出SDL
SDL_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++20
TARGET := 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
声明:资源可能存在第三方来源,若有侵权请联系删除!