我在网上弄到的一个程序,定义声音文件的格式如下
const
WAVE_FORMAT_GSM610 = $0031;
begin
PtrWaveFormatRs := AllocMem(SizeOf(TWaveFormatRs));
with PtrWaveFormatRs^ do begin
with WFX do begin
wFormatTag := WAVE_FORMAT_GSM610;
nChannels := 1;
nSamplesPerSec := 44025;
nAvgBytesPerSec := 2239;
nBlockAlign := 65;
wBitsPerSample := 0;
cbSize := 2;
end;用这个格式是可以录制声音的,但当我想换一种格式要求声音效果好一点的时候,无论怎么设都不行,程序一执行就出错,高人来帮帮我吧!!
const
WAVE_FORMAT_GSM610 = $0031;
begin
PtrWaveFormatRs := AllocMem(SizeOf(TWaveFormatRs));
with PtrWaveFormatRs^ do begin
with WFX do begin
wFormatTag := WAVE_FORMAT_GSM610;
nChannels := 1;
nSamplesPerSec := 44025;
nAvgBytesPerSec := 2239;
nBlockAlign := 65;
wBitsPerSample := 0;
cbSize := 2;
end;用这个格式是可以录制声音的,但当我想换一种格式要求声音效果好一点的时候,无论怎么设都不行,程序一执行就出错,高人来帮帮我吧!!
解决方案 »
- ADOQuery如何连接SQL 2000桌面数据库
- 在form内声明类
- 重分悬赏,一个超级难的图像拼合程序(在线等)
- DBGRID显示列汇总问题!谢谢
- 怎么用indy控件TIdTcpClient/Server来发送和接收消息?
- 在TField.OnChange(字段更改事件)中,如何获得字段更改前的值(回答马上结贴)
- Delphi做ActiveX控件的问题
- 如何用SQl语句判断表中是否有要输入的记录,没有继续下面的工作,有提示错误?
- 请问在三层结构中,如果要操作数据库中的记录,是每次都用重写ClientDataset.CommandText:='Sql',还是用ClientDataSet1.ApplyUpdates方法更好?两者有什么区别么?谢谢
- DELPHI连接SQLSERVER7的问题
- 不好意思,麻烦 lxpbuaa(桂枝香在故国晚秋) 进来领分。
- 请问各位哪为知道什么地方有DELPHI关于通信或WEB编程的教程啊?
nSamplesPerSec 为采样频率,44025已经很高了CD也只有这么高的采样频率,可以不改。
wBitsPerSample 为采样位数,一般用8或16,CD用24位甚至更高,这个是可以明显改变音质的!但一般用16也够了。
nAvgBytesPerSec为每秒字节数固定为wBitsPerSample*nChannels*nSamplesPerSec/8
一、wBitsPerSample := 0采样频率为0;
二、nAvgBytesPerSec不满足wBitsPerSample*nChannels*nSamplesPerSec/8;
谢谢了
我的各项参数是按照
wFormatTag := WAVE_FORMAT_PCM;
nChannels := 2;
nSamplesPerSec := 22050;
nAvgBytesPerSec := 88200;
nBlockAlign := 4;
wBitsPerSample := 16;
cbSize := 2;
设置的,可是录音不到两秒就出错,用那个低采样率的却不出错,能不能帮我看看是什么毛病呢?