如何开始在音频中的特定点播放波形音频文件?

时间:2019-06-20 00:25:25

标签: c++ playsound

我找不到任何允许我在特定点(例如进入音频30秒)开始播放wav文件的代码。 C ++中有什么可以让我做到这一点?

我的程序应该像理论上的收音机那样工作,当您更改“频道”时,歌曲已经达到某个特定点,而不是从头开始。歌曲的播放时间结束后,“电台”上的歌曲当前会更改并随机化,但是如果播放时间为30秒,则歌曲只会从头开始播放。

PlayWavFile函数:

void PlayWavFile(int resource) {
    PlaySound(MAKEINTRESOURCE(resource), hInst, SND_RESOURCE | SND_ASYNC);
}

变量初始化:

 const RECT wCoord = { 0, 0, 500, 500 };
    duration = std::clock() - start;
    int durSec = duration / 1000;
    if (durSec1 == NULL) {
        durSec1 = duration / 1000;
    }
    if (durSec2 == NULL) {
        durSec2 = duration / 1000;
    }
    if ((durSec - durSec1) >= songs[i].songLength) {
        i = NULL;
        durSec1 = NULL;
    }
    if ((durSec - durSec2) >= songs[j].songLength) {
        j = NULL;
        durSec2 = NULL;
    }
    srand((unsigned)timer * duration);
    if (i == NULL) {
        i = rand() % 26;
        InvalidateRect(hWnd, &wCoord, true);
        UpdateWindow(hWnd);
    }
    if (j == NULL) {
        j = rand() % 26;
        InvalidateRect(hWnd, &wCoord, true);
        UpdateWindow(hWnd);
    }
    std::string song1 = songs[i].songName + " - " + songs[i].artist;
    std::string song2 = songs[j].songName + " - " + songs[j].artist;

按下按钮的位置和广播电台已更改以播放不同的歌曲:

    case WM_COMMAND:
        if (LOWORD(wParam) == 1) {
            PlayWavFile(i);
        }
        else if (LOWORD(wParam) == 2) {
            PlayWavFile(j);
        }
        else if (LOWORD(wParam) == 3) {
            PlaySound(NULL, NULL, NULL);
        }
        break;

如上所述,我希望能够在歌曲的特定点播放歌曲,例如30秒。另外,我正在编写Windows应用程序的代码,因此代码必须兼容。

0 个答案:

没有答案