请各位帮忙,怎样获取WAV等音频文件所能播放的时间?(100分)

  • 主题发起人 主题发起人 zhaojw
  • 开始时间 开始时间
Z

zhaojw

Unregistered / Unconfirmed
GUEST, unregistred user!
请各位帮忙,怎样获取WAV等音频文件所能播放的时间?
 
发MCI Command Strings,具体情况
参考win32 api--Win32 Multimedia Programmer's Reference
--MCI Command strings或在win32 api的Win32 Multimedia Programmer's Reference
中查status关键字!别忘了是Win32 Multimedia Programmer's Reference中的!
 
MediaPlayer.FileName:='YourSound.Wav';
MediaPlayer.Open;
ShowMessage(IntToStr(MediaPlayer.Length div 1000))
 
WAV文件的头部是如下的一个结构

typedef struct {
DWORD dwRIFF;
DWORD dwFileLen;
DWORD dwWAVE;
DWORD dw_fmt;
DWORD dwFmtLen;
WORD wDataType;
WORD wNChannels;
DWORD dwSamplingRate;
DWORD dwNBytesPerSec;
WORD wAlignment;
WORD wNBitsPerSam;
DWORD dwdata;
DWORD dwDataLen;
}
共有44bit,只需将这个头部读出,用dwDataLen除以dwNBytesPerSec
就是总共的秒数。
 
有以下几种方法:
1.用TMediaPlayer:设备打开后TMediaPlayer.Length就是当前播放的文件的长度(毫秒)
2.用MCI:利用MCISendString之类的命令打开设备后调用MCISendString函数
status (设备别名) length
(以上是一个主要的参数,其他参数详见Delphi光盘带的Win32.hlp中关于MCISendString
的解释)
函数返回值就是文件时间长度(毫秒)
 
caofx的方法最好。
 
多人接受答案了。
 

Similar threads

回复
0
查看
1K
不得闲
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
886
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
945
DelphiTeacher的专栏
D
后退
顶部