1、我的麦克风插上电脑后,我的托盘里也看到了麦克风的图标,但我对着麦克风说话怎么我的耳机怎么没有声音(耳机没有问题)???
2、我怎么样才能捕获麦克风的声音并把它存为.wav文件或其他问题,以便我以后再播放这些文件??? 具体怎么做啊,有没有哪位大侠接触过这个方面,能否提供一些源码???
2、我怎么样才能捕获麦克风的声音并把它存为.wav文件或其他问题,以便我以后再播放这些文件??? 具体怎么做啊,有没有哪位大侠接触过这个方面,能否提供一些源码???
解决方案 »
- 为什么生成dbf文件英文表头就没事,中文表头就是乱码而且出错呢?
- 谁能帮我解释下这句SQL语句什么意思?
- 请教Sql Server中的Numeric属于哪种FieldType
- 寻求招聘delphi开发人员的考试试题
- 请教!在DELPHI中如何跳过异常继续运行程序?????
- 请教word中插图片的问题?
- 如何判断一个窗体已经被创建了???
- help!用NMFTP控件可以在后台线程中传输文件么?好像有问题,谁做过,请帮我!
- 在WINDOWS控件的通知消息中,消息是如何解释?
- borland的按钮图标太难看了,那位大侠有好用的?
- 各位可以帮我解答一下Tdatabase的具体用法吗?以及和TTable,Tquery的区别?
- 在线等待,怎样的D中嵌入Flash
你的问题要使用DirectSound解决
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, MPlayer;
type
TWavHeader=record//定义一个Wav文件头格式
rId:longint;
rLen:longint;
wId:longint;
fId:longint;
fLen:longint;
wFormatTag:word;
nChannels:word;
nSamplesPerSec:longint;
nAvgBytesPerSec:longint;
nBlockAlign:word;
wBitsPerSample:word;
dId:longint;
wSampleLength:longint;
end;
TForm1 = class(TForm)
MediaPlayer1: TMediaPlayer;
BtStart: TButton;
BtStop: TButton;
procedure CreateWav(channels:word;resolution:word;rate:longint;fn:string);
procedure BtStartClick(Sender: TObject);
procedure BtStopClick(Sender: TObject); //自定义写一个Wav文件头过程
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.CreateWav(channels:word; {1(单声)或者2(立体声)}
resolution:word; {8或者16,代表8位或16位声音 }
rate:longint; {声音频率,如11025,22050,44100}
fn:string {对应的文件名称} );
var wf:file of TWavHeader;
wh:TWavHeader;
begin
wh.rId :=$46464952;
wh.rLen :=36;
wh.wId :=$45564157;
wh.fId :=$20746d66;
wh.fLen :=16;
wh.wFormatTag :=1;
wh.nChannels :=channels;
wh.nSamplesPerSec :=rate;
wh.nAvgBytesPerSec:=channels*rate*(resolution div 8);
wh.nBlockAlign :=channels*(resolution div 8);
wh.wBitsPerSample :=resolution;
wh.dId :=$61746164;
wh.wSampleLength :=0;
assignfile(wf,fn); {打开头文件}
rewrite(wf); {移动指针到文件头}
write(wf,wh); {写进文件头}
closefile(wf); {关闭文件}
end;
procedure TForm1.BtStartClick(Sender: TObject);
begin
try
//在程序当前目录下创建一个Wav文件Temp.wav
CreateWav(1,8,11025,(ExtractFilePath(Application.ExeName)+'Temp.wav'));
MediaPlayer1.DeviceType :=dtAutoSelect;
MediaPlayer1.FileName :=(ExtractFilePath(Application.ExeName)+'Temp.wav');
MediaPlayer1.Open ;
MediaPlayer1.StartRecording ;
BtStart.Enabled :=false;
BtStop.Enabled :=true;
except
BtStart.Enabled :=True;
BtStart.Enabled :=false;
Application.MessageBox('媒体设备初始化失败!','错误',MB_ICONERROR+MB_OK);
end;
end;
procedure TForm1.BtStopClick(Sender: TObject);
begin
try
MediaPlayer1.Stop ;
MediaPlayer1.Save ;
MediaPlayer1.Close ;
Application.MessageBox('声音录制完毕!','信息',MB_ICONINFORMATION+MB_OK);
BtStart.Enabled :=True;
BtStop.Enabled :=false;
except
Application.MessageBox('保存声音文件出错!','错误',MB_ICONERROR+MB_OK);
BtStart.Enabled :=True;
BtStop.Enabled :=false;
end;
end;
end.