我确定我有两个音效设备 (waveInGetNumDevs()return 2)
但是只要不用WAVE_MAPPER 就会传回 32 error
WAVERR_BADFORMAT
不知道高手有何见解
可能的错误会在哪边呢?
谢谢
但是只要不用WAVE_MAPPER 就会传回 32 error
WAVERR_BADFORMAT
不知道高手有何见解
可能的错误会在哪边呢?
谢谢
解决方案 »
- IdTCPClient取消接受文件后,IdTCPServer死掉了,请问怎么解决。
- 使用case of 的问题,请看正文,谢谢!
- IdTCPClient和IDTCPServer传输问题?
- delphi quickrep.preview时怎么样把上面的打印按钮去掉
- 请问我加了一个PopupMenu,需要用Tbutton按钮激活该菜单,但是....
- 我写了一个打印控制程序,请提宝贵意见:
- delphi 怎么设置显示或隐藏扩展名?
- 如何在DELPHI中调用一个COM组件
- 输入的问题,进来看看哦!
- 奇怪,Excel表会使Access数据出问题?
- 高分求PDF文件显示Delphi组件(不是指用ACROBAT的ActiveX生成的)
- 记一次让人极度气愤的面试~~~~~~
不曉得問題出在哪兒啊~高手指教!謝謝
[StructLayout(LayoutKind.Sequential)]
public struct WaveFormat
{
public short wFormatTag;
public short nChannels;
public int nSamplesPerSec;
public int nAvgBytesPerSec;
public short nBlockAlign;
public short wBitsPerSample;
public short cbSize; public WaveFormat(int rate, int bits, int channels)
{
wFormatTag = (short)WaveFormats.PCM;
nChannels = (short)channels;
nSamplesPerSec = rate;
wBitsPerSample = (short)bits;
cbSize = 0; nBlockAlign = (short)(channels * (bits / 8));
nAvgBytesPerSec = nSamplesPerSec * nBlockAlign;
}
}高手来指点啊
傳值uDeviceID=1,得到的結構體WaveinCaps中的formates為0,也就是說不支持任何wave文件格式
WAVE_FORMAT_1M08
11.025 kHz, mono, 8-bit
WAVE_FORMAT_1M16
11.025 kHz, mono, 16-bit
WAVE_FORMAT_1S08
11.025 kHz, stereo, 8-bit
WAVE_FORMAT_1S16
11.025 kHz, stereo, 16-bit
WAVE_FORMAT_2M08
22.05 kHz, mono, 8-bit
WAVE_FORMAT_2M16
22.05 kHz, mono, 16-bit
WAVE_FORMAT_2S08
22.05 kHz, stereo, 8-bit
WAVE_FORMAT_2S16
22.05 kHz, stereo, 16-bit
WAVE_FORMAT_4M08
44.1 kHz, mono, 8-bit
WAVE_FORMAT_4M16
44.1 kHz, mono, 16-bit
WAVE_FORMAT_4S08
44.1 kHz, stereo, 8-bit
WAVE_FORMAT_4S16
44.1 kHz, stereo, 16-bit
但是0不在以上結果之內,這說明什麽問題呢?
var
BufLen: word;
buf: pointer;
begin
BufSize := 3 * 500 + 100;
Bits16 := false;
with header do
begin
wFormatTag := WAVE_FORMAT_PCM;
nChannels := 1;
nSamplesPerSec := 22050;
wBitsPerSample := integer(Bits16) * 8 + 8;
nBlockAlign := nChannels * (wBitsPerSample div 8 );
nAvgBytesPerSec := nSamplesPerSec * nBlockAlign;
cbSize := 0;
end; //若改用其它值,则无法正常捕获到输入数据
WaveInOpen(Addr(WaveIn), WAVE_MAPPER , addr(header),Handle , 0, CALLBACK_WINDOW);
BufLen := header.nBlockAlign * BufSize;
hBuf := GlobalAlloc(GMEM_MOVEABLE and GMEM_SHARE, BufLen);
Buf := GlobalLock(hBuf);
with BufHead do
begin
lpData := Buf;
dwBufferLength := BufLen;
dwFlags := WHDR_BEGINLOOP;
end;
WaveInPrepareHeader(WaveIn, Addr(BufHead), sizeof(BufHead));
WaveInAddBuffer(WaveIn, addr(BufHead), sizeof(BufHead));
stop := true;
WaveInStart(WaveIn);
end;