实时音频播放C ++ WaveIn& waveout的 [英] Realtime audio playback C++ WaveIn & WaveOut

查看:356
本文介绍了实时音频播放C ++ WaveIn& waveout的的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

嗨!



我是VC ++的初学者,我有一点(对我来说是一个很大的)实时音频播放的问题。我使用以下代码:



Hi!

I''m a starter in VC++, and I have a little (for me is a big) problem with real time audio playback. I Use the following code:

#include <windows.h>
#include <mmsystem.h>
#include <stdio.h>
#define SOUNDBUFF 65536;
WAVEFORMATEX wf;
WAVEHDR whdr;
HWAVEIN hWaveIn;
HWAVEOUT hWaveOut;
LPSTR lpData;
int main(void)
{
char clpData[65536];
lpData=clpData;
wf.wFormatTag=WAVE_FORMAT_PCM;
wf.nChannels=1;
wf.nSamplesPerSec=8000;
wf.nAvgBytesPerSec=wf.nSamplesPerSec;
wf.nBlockAlign=1;
wf.wBitsPerSample=8;
wf.cbSize=0;
waveInOpen((LPHWAVEIN)&hWaveIn,WAVE_MAPPER,&wf,0,0,CALLBACK_NULL);

whdr.lpData = lpData;
whdr.dwBufferLength = SOUNDBUFF;
whdr.dwBytesRecorded = 0;
whdr.dwFlags = 0L;
whdr.dwLoops = 0L;
waveInPrepareHeader(hWaveIn,&whdr,sizeof(whdr));
waveInAddBuffer(hWaveIn,&whdr,sizeof(whdr));
waveInStart(hWaveIn);
int n=0;
do {
} while (!(whdr.dwFlags & WHDR_DONE));
waveInUnprepareHeader((HWAVEIN)hWaveOut,&whdr,sizeof(whdr));
waveInClose(hWaveIn);
waveOutOpen(&hWaveOut,WAVE_MAPPER,&wf,0,0,CALLBACK_NULL);
waveOutPrepareHeader(hWaveOut,&whdr,sizeof(whdr));
waveOutWrite(hWaveOut,&whdr,sizeof(whdr));
n=0;
do {
} while (!(whdr.dwFlags & WHDR_DONE));
waveOutUnprepareHeader(hWaveOut,&whdr,sizeof(whdr));
waveOutClose(hWaveOut);
return 0;
}





它工作正常,但我会听到实时,什么是输入缓冲,并且不断。我不知道我怎么能做到,我不明白,我怎么能在写作时读取缓冲区。请帮助,因为我在一周前探测它并没有结果。



感谢大家!



It''s work fine, but I would hear real time, what is input buffer, and continuously. I haven''t idea how can i make it, i don''t understand, how can i read a buffer when is under writing. Please help, cause I probe it a week ago and no results.

Thanks for everyone!

推荐答案

如果你是C ++的初学者,你应该学习C ++并没有迷失在不同窗口API的变幻莫测中。



我真的不明白你想要问什么,所以。你想让它实时工作,它不是吗?
If you''re a beginner in C++, you should learn C++ and not lose yourself in the vagaries of different windows APIs.

I can''t really understand what you''re trying to ask, tho. You want it to work in real time and it doesn''t ?


这篇关于实时音频播放C ++ WaveIn&amp; waveout的的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆