Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

требуется слить ряд файлов в один...


EvgenTss ©   (2003-06-01 20:54:00) 

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


Думкин   (2003-07-17 05:20:00) [1]

По-моему, вопрос требует уточнений.
1. Надо рассказать про заголовки?
2. Быстро получить что? Фиговину в памяти для проигрывания или как?


Pltnick   (2003-07-17 00:08:00) [2]

извини, там в коде опечатка:

......
repeat
BlockRead( w,Buf,SizeOf(Buf1),Ret);
( w0,Buf,Ret)

извини, там в коде опечатка:

......
repeat
BlockRead( w,Buf,SizeOf(Buf1),Ret);
BlockWrite( w0,Buf,Ret);
until (Ret=0) or (Ret<>SizeOf(Buf));
.....


Pltnick   (2003-07-17 00:05:00) [3]

если ты сливаешь все в один файл, то уже гарантировано, что звуковые парам. в файлах одинаковые (sps, разрядность).
filepaths - массив путей к файлам.

const
bufSize = 1024 //варьируй это значения для достижения
//оптимальной скорости копирования файлов
var
w, w0: file;
Buf: array[1..bufSize];
...
AssignFile(ResultFilePath, w0);
Rewrite(w0, 1);
//закатай в файл заголовок
for f := 1 to FilesCount do
begin
AssignFile(filepaths[f], w);
totalsize_heads := totalsizeheads + FileSize(w);
end;
totalsize := totalsize_heads - (FileCount * 44);
//воспользуйся моим модуем.
//компоненты->сборник units->wavefileoptions.pas
//там найдешь все, чтобы записать заголовок.
//размер данных ты знаешь = totalsize
for f := 1 to FilesCount do
begin
AssignFile(filepaths[f], w);
Reset(w); Seek(w, 45);
repeat
BlockRead(w1,Buf,SizeOf(Buf1),Ret);
( w,Buf,Ret)

если ты сливаешь все в один файл, то уже гарантировано, что звуковые парам. в файлах одинаковые (sps, разрядность).
filepaths - массив путей к файлам.

const
bufSize = 1024 //варьируй это значения для достижения
//оптимальной скорости копирования файлов
var
w, w0: file;
Buf: array[1..bufSize];
...
AssignFile(ResultFilePath, w0);
Rewrite(w0, 1);
//закатай в файл заголовок
for f := 1 to FilesCount do
begin
AssignFile(filepaths[f], w);
totalsize_heads := totalsizeheads + FileSize(w);
end;
totalsize := totalsize_heads - (FileCount * 44);
//воспользуйся моим модуем.
//компоненты->сборник units->wavefileoptions.pas
//там найдешь все, чтобы записать заголовок.
//размер данных ты знаешь = totalsize
for f := 1 to FilesCount do
begin
AssignFile(filepaths[f], w);
Reset(w); Seek(w, 45);
repeat
BlockRead(w1,Buf,SizeOf(Buf1),Ret);
BlockWrite(w,Buf,Ret);
until (Ret=0) or (Ret<>SizeOf(Buf));
close(w);
end;
close(w0);

...


SergeyKatruk   (2003-07-16 13:44:00) [4]

я через - TMemoryStream делал, однако не скажу, что это самый быстрый способ - а единственный, который я придумал..........


Наверх

Титульная страница Поиск, карта сайта Написать письмо