Вниз
Скачать: CL | DM;

требуется слить ряд файлов в один...   Найти похожие ветки 

← →
EvgenTss   (2003-06-01 20:54) [0]

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


← →
SergeyKatruk ©   (2003-07-16 13:44) [1]

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


← →
Pltnick ©   (2003-07-17 00:05) [2]

если ты сливаешь все в один файл, то уже гарантировано, что звуковые парам. в файлах одинаковые (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);

...


← →
Pltnick ©   (2003-07-17 00:08) [3]

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

......
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));
.....


← →
Думкин ©   (2003-07-17 05:20) [4]

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



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.02 c
6-41869
SiONYX
2003-09-09 02:30
2003.11.13
Как зная IP адрес узнать имя компьютера?


14-42028
Johnny Smith
2003-10-16 10:58
2003.11.13
Только что прислали. Не могу не поделиться...


4-42310
JS
2003-09-06 17:07
2003.11.13
Прозрачный bitmap в меню


14-41897
Думкин
2003-10-17 04:59
2003.11.13
С днем рождения! 17 октября.


3-40868
denmin
2003-10-21 11:00
2003.11.13
как сохранить запрос SP в таблицу.




   Наверх