快乐星空Maker 2023-10-22 18:28 采纳率: 23.1%
浏览 35

如何使用C++播放音乐啊?急!!

最近啊,我一直在写小游戏。我觉得不够好玩,所以我想添加点音乐,我通过秘密方式搞来了一个叫Alone.mp3的音乐。是这样的:

img

我想用C++播放出来。我写下了代码:

#include <bits/stdc++.h>
#include <conio.h>
#include <windows.h>
using namespace std;
void music()
{
    system("start Alone.mp3");
}
int main()
{
    music();
    return 0;
}

可为什么运行结果是这样的:

img

我并不想通过Windows Meida Player 来播放音乐。而是让这个程序自己播放音乐,不借助、显示其他的任何软件。该怎么办呢?急啊!
各位帮忙发过来代码呗~

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-10-22 20:44
    关注

    【以下回答由 GPT 生成】

    #include <iostream>
    #include <thread>
    
    #ifdef _WIN32
    #include <Windows.h>
    #else
    #include <unistd.h>
    #endif
    
    void playMusic() {
    #ifdef _WIN32
        // 使用mciSendString函数在Windows平台下播放音乐
        std::string command = "open Alone.mp3 type mpegvideo alias mp3";
        mciSendStringA(command.c_str(), nullptr, 0, 0);
        command = "play mp3";
        mciSendStringA(command.c_str(), nullptr, 0, 0);
    #else
        // 在其他平台下,你可以使用系统命令行工具或者使用特定的库来播放音乐
        std::cout << "对不起,我不支持在该平台播放音乐。\n";
    #endif
    }
    
    int main() {
        playMusic();
    
    #ifdef _WIN32
        // 在Windows平台下等待音乐播放完成后关闭
        std::this_thread::sleep_for(std::chrono::seconds(10));
        std::string command = "stop mp3";
        mciSendStringA(command.c_str(), nullptr, 0, 0);
        command = "close mp3";
        mciSendStringA(command.c_str(), nullptr, 0, 0);
    #else
        // 在其他平台下等待音乐播放完成后关闭
        std::this_thread::sleep_for(std::chrono::seconds(10));
    #endif
    
        return 0;
    }
    

    通过使用mciSendString函数,我们可以在Windows平台下播放音乐。注意,在其他平台下(如Linux),你可能需要使用不同的方法来实现播放音乐的功能。此外,为了等待音乐播放完成后再关闭程序,我们可以使用std::this_thread::sleep_for函数来延迟程序执行。请根据你的需求和平台选择适合的方式来播放音乐。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 10月22日

悬赏问题

  • ¥15 已知平面坐标系(非直角坐标系)内三个点的坐标,反求两坐标轴的夹角
  • ¥15 webots有问题,无响应
  • ¥15 数据量少可以用MK趋势分析吗
  • ¥15 使用VH6501干扰RTR位,CANoe上显示的错误帧不足32个就进入bus off快慢恢复,为什么?
  • ¥15 大智慧怎么编写一个选股程序
  • ¥100 python 调用 cgps 命令获取 实时位置信息
  • ¥15 两台交换机分别是trunk接口和access接口为何无法通信,通信过程是如何?
  • ¥15 C语言使用vscode编码错误
  • ¥15 用KSV5转成本时,如何不生成那笔中间凭证
  • ¥20 ensp怎么配置让PC1和PC2通讯上