Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как определить продолжительность в секундах wav файла

Delphi , Мультимедиа , Аудио



Автор: http://www.swissdelphicenter.ch

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;

Программный код на Delphi, который использует компонент TFileStream для чтения файла WAV и затем вычисляет его продолжительность в секундах. Вот шаг за шагом, что делает код:

  1. Создается запись TWavHeader, которая представляет собой структуру заголовка файла WAV.
  2. В обработчике события Button1Click открывается файл WAV ('C:\SomeFile.wav') для чтения с помощью TFileStream.
  3. Читается вся структура заголовка WAV в переменную Header с помощью метода ReadBuffer.
  4. Код вычисляет продолжительность файла WAV, умножая общее количество байтов (DataBytes) на 1000 (для преобразования миллисекунд в секунды), затем делив результат на количество байт в секунду (BytesPerSecond) и наконец конвертируя полученное значение в строку с помощью FloatToStr.

Формула вычисления продолжительности следующая:

Duration (seconds) = (Total Bytes / Bytes Per Second) * 0.001

Эта формула предполагает, что файл WAV имеет постоянную частоту дискретизации и не применяется никакое сжатие или кодирование.

Вот альтернативное решение на Delphi:

uses
  MPlayer, MMSystem;

function GetWavDuration(const FileName: string): string;
var
  Header: TWavHeader;
begin
  with TFileStream.Create(FileName, fmOpenRead) do
  try
    ReadBuffer(Header, SizeOf(Header));
  finally
    Free;
  end;

  Result := FloatToStr(Int64(header.DataBytes div header.BytesPerSecond) / 1000);
end;

Функция GetWavDuration принимает имя файла WAV в качестве входного параметра и возвращает его продолжительность в секундах в виде строки. Вы можете вызвать эту функцию из кода вашей формы, например:

Button1Click(Sender: TObject);
begin
  ShowMessage(GetWavDuration('C:\SomeFile.wav'));
end;

Обратите внимание, что вам нужно добавить компонент TFileStream в палетку вашей формы и опустить его на дизайнере форм для использования этого кода.

Определить продолжительность в секундах wav файла можно с помощью программирования на языке Delphi, где из полученных данных хедера файла вычисляется время звучания в секундах.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Аудио ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-05-01 12:35:02/0.0031180381774902/0