簡體   English   中英

C++ 不能通過 mciSendString 播放 mp3 文件

[英]C++ not playing mp3 files through mciSendString

我的目標是構建一個播放 MP3 文件的音頻播放器。 為此,我使用了mciSendString() function。 所有 MP3 文件與主源文件位於同一文件夾中。 盡管我無法播放 MP3 文件,但我已經在線查看了文檔和一些語法。 當我 select 一首歌時,它不播放,代碼跳到system("pause")

我的 header 文件

#include <iostream>
#include <windows.h>
#include <conio.h>
#pragma comment(lib, "Winmm.lib")

using namespace std;

播放 MP3 文件的 Function:

void playsong()
{
    int song;
    system("cls");
    cout << "****************************" << endl;
    cout << "\tPLAYING SONG\n";
    cout << "****************************" << endl;
    cout << "List of Songs\n";
    cout << "1.0\n";
    cout << "2.AFSANAY\n";
    cout << "3.Agency\n";
       
    cin >> song;
    switch(song)
    {
        case 1:
        {
            mciSendString("open \"C:\\Users\Murad\Documents\3rd Semester\OOP\Assignments\Assignmnet 1\Assignmnet 1\0.mp3\" type mpegvideo alias mp3", NULL, 0, NULL);
            mciSendString("play mp3", NULL, 0, NULL); 
            break;
        }
        case 2:
        {
           mciSendString("open \"C:\\Users\Murad\Documents\3rd Semester\OOP\Assignments\Assignmnet 1\Assignmnet 1\AFSANAY.mp3\" type mpegvideo alias mp3", NULL, 0, NULL);
           mciSendString("play mp3", NULL, 0, NULL);
           break;
        }
        case 3:
        {
            mciSendString("open \"C:\\Users\Murad\Documents\3rd Semester\OOP\Assignments\Assignmnet 1\Assignmnet 1\Agency.mp3\" type mpegvideo alias mp3", NULL, 0, NULL);
            mciSendString("play mp3", NULL, 0, NULL);
            break;
        }
    }

    system("pause");
    system("cls");
    display();
}

open的命令沒有正確轉義,並且您沒有檢查返回值是否有錯誤。

但是即使沒有發生錯誤, play命令也是異步的,所以一旦開始播放, mciSendString()仍然會立即退出。 您需要指定wait標志來等待播放完成,或者使用notify標志在播放完成時得到通知。 請參閱等待、通知和測試標志

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM