Как разрезать wav файл?

Материал из DRKB


Для чтения заголовка смотрите раздел:


Код для разрезания файла WAV на две части:

function SplitWave(Source, Dest1, Dest2: TFileName; Pos: Integer): Boolean;
var
  f1, f2, f3: TFileStream;
  w: TWaveHeader;
  p: Integer;
begin
  Result := False

  if not FileExists(Source) then
    Exit;

  try
    w := GetWaveHeader(Source);

    p := Pos - SizeOf(TWaveHeader);

    f1 := TFileStream.Create(Source, fmOpenRead);
    f2 := TFileStream.Create(Dest1, fmCreate);
    f3 := TFileStream.Create(Dest2, fmCreate);

    {++++++++++Create file 1 ++++++++++++++++}
    w.len := p;
    f2.Write(w, SizeOf(w));
    f1.Position := SizeOf(w);
    f2.CopyFrom(f1, p);
    {++++++++++++++++++++++++++++++++++++++++}

    {+++++++++++Create file 2 +++++++++++++++}
    w.len := f1.Size - Pos;
    f3.Write(w, SizeOf(w));
    f1.Position := Pos;
    f3.CopyFrom(f1, f1.Size - Pos);
    {++++++++++++++++++++++++++++++++++++++++}
  finally
    f1.Free;
    f2.Free;
    f3.Free;
  end;

  Result := True;
end;


Source: Взято с Delphi Knowledge Base: http://www.baltsoft.com/
ID: 04300