Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Spajanje više wav fajlova u jedan

[es] :: Pascal / Delphi / Kylix :: Spajanje više wav fajlova u jedan

[ Pregleda: 1892 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

naskovic
Ljubisa Naskovic
Beograd/Aleksinac

Član broj: 108297
Poruke: 104
79.101.220.*

Sajt: www.nadjime.net


+1 Profil

icon Spajanje više wav fajlova u jedan01.03.2009. u 12:17 - pre 184 meseci
Poštovani, potrebna mi je procedura ili funkcija koja spaja više wav fajla u jedan.
ja sam našao na netu sledeću proceduru koja posle spajanja daje wav fajl u kome se čuje pucketanje.
Fajlovi su istog formata tako da ne znam kako da rešim problem. Molim za pomoć.

procedure JoinWaves(FileList: TStrings; OutputFile: string);
{All files must be of the same format}
var
I: Integer;
FileSize: LongInt;
InStream, OutStream: TFileStream;
begin
OutStream := TFileStream.Create(OutputFile, fmCreate);
try
for I := 0 to FileList.Count - 1 do
if FileExists(FileList[I]) then
begin
InStream := TFileStream.Create(FileList[I], fmOpenRead);
try
if I = 0 then
OutStream.CopyFrom(InStream, InStream.Size)
else if InStream.Size > 44 then
begin
InStream.Position := 44;
OutStream.CopyFrom(InStream, InStream.Size - 44);
end;
finally
InStream.Free;
end;
end;
OutStream.Position := 4;
FileSize := OutStream.Size - 8;
OutStream.WriteBuffer(FileSize, SizeOf(FileSize));
OutStream.Position := 40;
FileSize := OutStream.Size - 44;
OutStream.WriteBuffer(FileSize, SizeOf(FileSize));
finally
OutStream.Free;
end;
end;
 
Odgovor na temu

Boris B.
Ljubljana

Član broj: 213615
Poruke: 286
95.176.176.*



+14 Profil

icon Re: Spajanje više wav fajlova u jedan01.03.2009. u 16:43 - pre 184 meseci
Kod koji si postovao pretpostavlja da je velicina WAV header-a 44 bajta, sto ne mora uvek da bude slucaj. Iz koda se vidi da funkcija kopira header prvog fajla direktno u izlazni fajl i posle mu samo menja velicinu kada se zadnji fajl iskopira. Proveri prvo da li su wave-ovi koje hoces da spojis standardni (44 byte header) i zaista istog formata (sample rate i sample size, vidi se u properties->summary prozoru explorera). Ako jesu onda potrazi mogucu gresku u delu koda koji zapisuje velicinu fajla. Strukturu standardnog 44 byte header-a mozes da nadjes npr. na http://mathmatrix.narod.ru/Wavefmt.html

Ako ti nista od toga ne uspe ili ti wave-ovi imaju zaista nestandardne headere (mozda cak i non-audio data chunks, npr. cue points) mozes da probas sa NewAC Delphi komponentama, mislim da imaju bas komponentu za spajanje audio fajlova: http://symmetrica.net/newac/

Btw, kada postujes kod na forumu, postuj ga izmedju [ code ] i [/ code] tagova (samo bez razmaka, ne znam da escapujem), tako sacuvas identaciju i prikaze se sa monospace fontom


EDIT:
Izgleda da nema greske u delu koda koji zapisuje velicinu streama (a i kad bi je bilo ne bi sigurno prouzrokovala "pucketanje"). Proveri da li ti svi ulazni fajlovi sadrze rec "data" na tacno 36 bajtu.

[Ovu poruku je menjao Boris B. dana 01.03.2009. u 17:57 GMT+1]
if it walks like a duck and quacks like a duck, it could be a dragon doing a duck
impersonation.
 
Odgovor na temu

naskovic
Ljubisa Naskovic
Beograd/Aleksinac

Član broj: 108297
Poruke: 104
93.86.231.*

Sajt: www.nadjime.net


+1 Profil

icon Re: Spajanje više wav fajlova u jedan02.03.2009. u 00:24 - pre 184 meseci
Hvala puno, mislim da sam resio problem
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Spajanje više wav fajlova u jedan

[ Pregleda: 1892 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.