Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Звук, графика и видео > Как получить длину wav в секундах?


Автор: Poseidon 19.5.2005, 00:32
Код
uses 
  MPlayer, MMsystem; 

type 
  EMyMCIException = class(Exception); 
  TWavHeader = record 
    Marker1: array[0..3] of Char; 
    BytesFollowing: Longint; 
    Marker2: array[0..3] of Char; 
    Marker3: array[0..3] of Char; 
    Fixed1: Longint; 
    FormatTag: Word; 
    Channels: Word; 
    SampleRate: Longint; 
    BytesPerSecond: Longint; 
    BytesPerSample: Word; 
    BitsPerSample: Word; 
    Marker4: array[0..3] of Char; 
    DataBytes: Longint; 
  end; 

procedure TForm1.Button1Click(Sender: TObject); 
var 
  Header: TWavHeader; 
begin 
  with TFileStream.Create('C:\SomeFile.wav', fmOpenRead) do 
    try 
      ReadBuffer(Header, SizeOf(Header)); 
    finally 
      Free; 
    end; 
  ShowMessage(FloatToStr((Int64(1000) * header.DataBytes div header.BytesPerSecond) / 1000)); 
end;  

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)