当前位置:主页>仓库管理软件> 列表

怎样 读出 wav 文件的时间长度? 找速达软件

库存管理软件版1楼: 要求:客户指定一个wav 文件后,程序自动读出该wav文件的播放时间长度值?

不熟悉 wav的格式,知道的兄弟给个提示!

2楼: WAV文件的头:44字节
TPCMWaveHeader = record
rID : array[0..3] of char; { ''RIFF'' Identifier }
rLen : longint;
wID : array[0..3] of char; { ''WAVE'' Identifier }
fId : array[0..3] of char; { ''fmt '' Identifier }
fLen : longint; { Fixed, must be 16 }
wFormatTag : word; { Fixed, must be 1 }
nChannels : word; { Mono=1, Stereo=2 }
nSamplesPerSec : longint; { SampleRate in Hertz }
nAvgBytesPerSec : longint;
nBlockAlign : word;
nBitsPerSample : word; { Resolution, e.g. 8 or 16 }
dId : array[0..3]of char; { ''data'' Identifier }
dLen : longint; { Number of following data bytes }
end; 如速达软件

3楼: to skadon :
具体怎么访问,能给个例子吗?

4楼: var
hwav : TPCMWaveHeader;


WAVFilein : TFileStream;
bits, mmsec : LongInt;
timelen : float;
begin
WAVFilein:=TFileStream.Create(FileName,fmOpenRead);
WAVFilein.position:=0; // 从0开始
WAVFilein.Read(hwav, SizeOf(hwav));
WAVFilein.Free;
// hwav.dLen wave数据长度,字节
//每采样点字节数
bits:=(hwav.nChannels * hwav.nBitsPerSample) div 8;
//每秒字节数
mmsec:=hwav.nSamplesPerSec * bits;
//时间长度:秒
timelen:= hwav.dLen / mmsec;
end;

5楼: 谢了,我先试试

6楼: 收藏!

库存管理软件版7楼: 多谢 skadon ,测试正确!

8楼: 收了,说不定以后用的着,谢谢了

9楼: 多人接受答案了。