QT+SDL2环境搭建,保姆教程

SDL是音视频开发中常用的音频工具

第一步下载SDL2库,官网如下,这里版本可以任意选择,和QT版本,ffmpeg版本无关,下载时一定要选择“SDL2-devel-2.28.5-VC.Zip”,!!!!一定要带有devel和VC字段的压缩包,(PS 我一度以为是下载带有MinGW字段的那个压缩包,结果一直失败,淦)

我这里是windows平台哈,

 Simple DirectMedia Layer - Homepage (libsdl.org)​​​​​​x

第二步新建QT项目,Pro文件中引入如下代码,这里采用的是绝对路径,引入的链接库是64位版本,因为我用的编译器是MinGW64位版本,!!!!!这里建议采用MinGW编译器,版本一定要对应!!!!

#SDL库配置
INCLUDEPATH += D:\SDL2-devel-2.28.5-VC\SDL2-2.28.5\include

LIBS += D:\SDL2-devel-2.28.5-VC\SDL2-2.28.5\lib\x64\SDL2.lib\
        D:\SDL2-devel-2.28.5-VC\SDL2-2.28.5\lib\x64\SDL2main.lib\
        D:\SDL2-devel-2.28.5-VC\SDL2-2.28.5\lib\x64\SDL2test.lib

main文件中加入一下头文件,其中#undef  main非常重要,用以区分QTmain函数入口和SDL2main函数入口,

extern "C"
{
   #include "SDL.h"
   #undef main
}

第三步 main中加入以下代码,如果能正确打印出版本信息,则引入SDL2库正确

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    SDL_version version;
    SDL_VERSION(&version);
    qDebug()<<"version major is"<<version.major;
    qDebug()<<"version minor is"<<version.minor;

    return a.exec();
}

运行后成功打印出版本信息,引入正确。

  • 9
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
QtSDL是两种不同的程序库,均可用于实现音频播放。下面分别介绍一下在这两种程序库中实现音频播放的方法: Qt通过QMediaPlayer类来实现音频播放。QMediaPlayer类是Qt Multimedia模块的一部分,它可以播放各种媒体文件,包括音频和视频。在使用QMediaPlayer类时,需要先创建一个QMediaPlayer对象,然后调用setMedia方法设置音频文件的路径,最后调用play方法来开始播放音频文件。例如,以下代码可以播放一个MP3文件: ```c++ #include <QtMultimedia/QMediaPlayer> int main(int argc, char *argv[]) { QMediaPlayer player; player.setMedia(QUrl::fromLocalFile("/path/to/file.mp3")); player.play(); return 0; } ``` SDL也提供了音频播放功能。具体来说,可以通过SDL的音频子系统来实现。在使用SDL的音频子系统时,需要先调用SDL_Init函数初始化音频子系统,然后设置音频参数,注册回调函数,最后在回调函数中处理音频数据。以下是一个简单的示例代码,可以播放WAV文件: ```c #include <SDL2/SDL.h> // 回调函数,用于处理音频数据 void audio_callback(void *userdata, Uint8 *stream, int len) { static Uint32 pos = 0; // 当前播放位置 SDL_memcpy(stream, userdata + pos, len); pos += len; } int main(int argc, char *argv[]) { SDL_Init(SDL_INIT_AUDIO); SDL_AudioSpec wav_spec; Uint8 *wav_data; Uint32 wav_length; // 加载WAV文件 SDL_LoadWAV("/path/to/file.wav", &wav_spec, &wav_data, &wav_length); // 设置音频参数 SDL_AudioSpec want, have; SDL_memset(&want, 0, sizeof(want)); want.freq = wav_spec.freq; want.format = AUDIO_S16SYS; want.channels = wav_spec.channels; want.samples = 1024; want.callback = audio_callback; want.userdata = wav_data; // 打开音频设备并开始播放 SDL_OpenAudio(&want, &have); SDL_PauseAudio(0); // 等待音频播放结束 SDL_Delay(wav_length/wav_spec.freq*1000); // 关闭音频设备和释放资源 SDL_CloseAudio(); SDL_FreeWAV(wav_data); return 0; } ``` 综上所述,无论是Qt还是SDL都可以实现音频播放。要根据具体情况选择适合自己的程序库和方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值