Форум: "Media";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];
Внизтребуется слить ряд файлов в один... Найти похожие ветки
← →
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 вся ветка
Форум: "Media";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.032 c