c ++ sndPlaySound跳到10秒

时间:2017-04-25 21:23:56

标签: c++ audio ifstream playsound

我现在正在寻找几个小时,我希望你能帮助我。

我正在编写一个音乐播放器,它通过ifstream读取* .wav文件到缓冲区然后我通过sndPlaysound()播放声音。这有效,但现在我想暂停播放的歌曲然后继续,我想知道是否有人有任何建议如何我可以跳到例如在wav文件中10秒,这样我就不会再开始了。

这是我到目前为止所做的事情的代码:

#pragma comment(lib,"winmm.lib")
#include <windows.h>
#include <iostream>
#include <fstream>

Wave::Wave(char * filename)
{
    buffer = 0;

    std::ifstream infile(filename, std::ios::binary);

    /*here is some irrelevant code I omitted*/

    infile.seekg(0, std::ios::end);  //move to end
    int length = infile.tellg();   //
    buffer = new char[length];    //allocate memory
    infile.seekg(0, std::ios::beg);   //move to start
    infile.read(buffer, length); //save in buffer

    totalTime = (length - 44) / bytesPerSec; //total time of *.wav

    infile.close();
}

void Wave::play(bool async)
{
    if (async)
        sndPlaySound((LPCTSTR)buffer,  SND_MEMORY | SND_ASYNC);
    else
        sndPlaySound((LPCTSTR)buffer,  SND_MEMORY);
}

我正在寻找任何想法如何制作这样的方法

Wave::play(bool async, int x)
{
     /*start playing *.wav at x seconds*/
}

感谢您的每一个答案或想法

0 个答案:

没有答案