Как начать воспроизведение аудиофайла в определенной точке аудиосигнала? - PullRequest
0 голосов
/ 20 июня 2019

Я не могу найти какой-либо код, который позволил бы мне начать воспроизведение файла WAV в определенной точке (скажем, через 30 секунд после аудио).Есть ли в 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, поэтому код должен быть совместимым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...