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

c++播放音频

在 Dev-C++ 中播放音频,可以使用一些简单的库来实现。由于 Dev-C++ 是一个较老的 IDE,推荐使用轻量级的库,比如 WinAPI 或 SFML。以下是两种方法的示例:

方法 1:使用 WinAPI 播放音频
WinAPI 是 Windows 平台的原生 API,可以直接调用 PlaySound 函数来播放音频文件。

示例代码

#include <windows.h>
#include <mmsystem.h>
#include <bits/stdc++.h>
using namespace std;

int main() {
    // 播放音频文件(支持 .wav 格式)
    if (PlaySound(TEXT("audio.wav"), NULL, SND_FILENAME | SND_ASYNC)) {
        cout << "Playing audio..." <<endl;
    } else {
        cerr << "Failed to play audio!" <<endl;
    }

    // 等待用户输入以结束程序
    cout << "Press Enter to exit..." <<endl;
    cin.get();

    // 停止播放
    PlaySound(NULL, NULL, 0);

    return 0;
}

配置步骤
        在 Dev-C++ 中创建一个新项目。

        将上述代码粘贴到 main.cpp 中。

        确保你的项目链接了 winmm.lib:

        打开项目选项(Project Options)。

        在 "Parameters" 选项卡下的 "Linker" 框中添加 -lwinmm。

        将音频文件(如 audio.wav)放在项目目录下。

        编译并运行程序。

方法 2:使用 SFML 播放音频
SFML 是一个跨平台的多媒体库,支持音频、图形、窗口管理等功能。虽然 Dev-C++ 不是官方推荐的 IDE,但仍然可以配置使用。

安装 SFML
        下载 SFML 的 Dev-C++ 兼容版本(推荐 SFML 2.5.x)。

        从 SFML 官网 下载。

        解压 SFML 到你的项目目录或系统目录。

        配置 Dev-C++:

        打开项目选项(Project Options)。

        在 "Parameters" 选项卡下的 "Linker" 框中添加以下库:

-lsfml-audio -lsfml-system

        

在 "Directories" 选项卡下的 "Include" 中添加 SFML 的 include 路径。

在 "Library" 中添加 SFML 的 lib 路径。

示例代码

#include <SFML/Audio.hpp>
#include <iostream>

int main() {
    // 加载音频文件
    sf::SoundBuffer buffer;
    if (!buffer.loadFromFile("audio.wav")) {
        std::cerr << "Failed to load audio file!" << std::endl;
        return -1;
    }

    // 创建声音对象并设置缓冲区
    sf::Sound sound;
    sound.setBuffer(buffer);

    // 播放音频
    sound.play();

    // 等待音频播放完毕
    while (sound.getStatus() == sf::Sound::Playing) {
        sf::sleep(sf::milliseconds(100));
    }

    return 0;
}

配置步骤
将上述代码粘贴到 main.cpp 中。

将音频文件(如 audio.wav)放在项目目录下。

确保 SFML 的 DLL 文件(如 sfml-audio-2.dll)与可执行文件在同一目录下。

编译并运行程序。

方法 3:使用系统命令(仅限 Windows)
如果你只需要快速播放音频,可以使用系统命令调用默认播放器。

示例代码

#include <cstdlib>
#include <iostream>

int main() {
    // 使用系统命令播放音频
    std::system("start audio.wav");

    std::cout << "Playing audio..." << std::endl;
    std::cout << "Press Enter to exit..." << std::endl;
    std::cin.get();

    return 0;
}

说明
这种方法依赖于系统的默认音频播放器。

确保音频文件路径正确。

总结
如果你需要简单的音频播放功能,推荐使用 WinAPI 的 PlaySound 函数。

如果你需要更复杂的音频控制(如音量、循环等),可以使用 SFML。

如果你只是临时测试,可以使用系统命令快速播放音频。

根据你的需求选择合适的方法!

http://www.dtcms.com/a/26353.html

相关文章:

  • top命令输出内容详解
  • 【设计模式】【创建型模式】建造者模式(Builder)
  • FreeRTOS-rust 编译分析
  • 【C++】实现一个JSON解析器
  • ubuntu上如何查看coredump文件默认保存在哪个路径?
  • 【ISO 14229-1:2023 UDS诊断(ECU复位0x11服务)测试用例CAPL代码全解析⑲】
  • Xilinx FPGA工程移植步骤---包含软核工程
  • LeetCode刷题---哈希表---215
  • Jedis 客户端 用于java连接redis服务
  • Vue3 打造 Windows 桌面个性高效组件工具
  • git clone
  • Java运算符
  • 【原创】Ubuntu 22安装nexus私服
  • LeetCode刷题---哈希表---451
  • Kubernetes Pod健康检查全解析:从Liveness到滚动更新,掌握容器健康管理的核心技巧
  • DeepSeek是什么?两种模型的对比?
  • 系统设计之分布式
  • C++编程语言:抽象机制:模板和层级结构(Bjarne Stroustrup)
  • 宏块划分的原理
  • LeetCode1299
  • 自动创建spring boot应用(eclipse版本)
  • DeepSeek 入门指南
  • 【解决方法】vite-plugin-svg-icons使用中出现问题[vite] Cannot find package ‘fast-glob‘
  • 网络爬虫学习:借助DeepSeek完善爬虫软件,实现模拟鼠标右键点击,将链接另存为本地文件
  • BiRefNet C++ TensorRT (二分类图像分割)
  • MySQL数据库入门到大蛇尚硅谷宋红康老师笔记 高级篇 part 1
  • [原创](Modern C++)现代C++的关键性概念: 妙用std::reference_wrapper, 让std::list容器具有随机访问功能.
  • Zookeeper(54)如何使用Zookeeper的命令行工具?
  • 寒假学习总结
  • 如何解决服务器端口被攻击:全面防护与快速响应