我现在正在寻找几个小时,我希望你能帮助我。
我正在编写一个音乐播放器,它通过 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*/
}
感谢您的每一个答案或想法