我正在尝试使用C#和winmm.dll将此录制设置为可能的最低设置.我已经设置了下面的设置,但我没有听到任何差异.有谁知道我错过了什么?
我正在努力获得最低的音频设置.就像你从对讲机里听到的那样.
我对采样率所做的任何更改似乎都没有生效.
谢谢,
record("open new Type waveaudio Alias recsound", "", 0, 0);
record("set recsound time format ms bitspersample 8 samplespersec 8000 channels 1", "", 0, 0);
record("record recsound", "", 0, 0);
Run Code Online (Sandbox Code Playgroud) 最近我已经要求一个类似这个问题的解决方案:
有没有办法暂停/停止播放带有"等待"选项的mcisendstring的mp3文件?
我想在我的音频播放器中实现一个功能,允许人们连续播放声音,而滑块根据曲目运行的当前秒数移动,并且还具有在当前曲目之后转到下一曲目的功能.过度
之后(正如您可以在链接中阅读)尝试使用它
mciSendString("play mp3 wait", NULL, 0, NULL);
Run Code Online (Sandbox Code Playgroud)
由于轨道在完成之前无法暂停或停止的问题而失败,我现在正试图以另一种方式实现它.目前,当我开始播放曲目时,我也会启动另一个线程,即启动计数器.计数器以秒为单位获得轨道的长度,并且正在倒计时,还提供用于暂停/恢复计数器的互斥锁.为了阻止我的MusicCycle简单地循环不受控制,我加入了线程,因此等待终止.
void Music::MusicCycle(std::wstring trackPath)
{
while (true)
{
OpenMP3(trackPath);
mciSendString("play mp3", NULL, 0, NULL);
m_counterThread = boost::thread(boost::bind(&Counter::StartCount, m_counter, <length of track in seconds>));
m_counterThread.join();
//... Get new track here
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,整个方法也是在一个线程中创建的:
m_cycleThread = boost::thread(boost::bind(&Music::MusicCycle, this, trackPath));
Run Code Online (Sandbox Code Playgroud)
由MusicCycle函数启动的线程如下所示:
void Counter::StartCount(int seconds)
{
boost::mutex::scoped_lock lock(m_mutex);
for (int i = 0; i < seconds; i++)
{
while (m_counterLock)
{
m_condVar.wait(lock);
}
boost::this_thread::sleep(boost::posix_time::seconds(1));
}
}
Run Code Online (Sandbox Code Playgroud)
此外,我添加了另一个功能来使用我的Pause/Resume方法锁定/解锁互斥锁,这也调用相应的mciSendString函数
mciSendString("resume mp3", NULL, 0, NULL);
mciSendString("pause mp3", …Run Code Online (Sandbox Code Playgroud)