Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Объединение файлов в один. Возможно?

489
12 февраля 2008 года
NeO_u
277 / / 11.10.2006
Такой вопрос, возможно ли каким-то образом быстро объеденить файл в один...т.е., у меня есть два файла(допустим *.wav) размером по 5-7 гиг. Мне надо из этих двух файлов сделать один, но надо сделать это быстро. Насколько я понимаю, у каждого файла есть свой заголовок, который определяет местоположение на винте. Так вот, я бы хотел узнать, каким образом можно поменять этот заголовок, что бы из двух файлов, стал один...

ЗЫ: Просто процесс открытия двух файлов и записывания их в новый занимает очень много времени, а хотелось бы склеивать файлы по 30-40 гиг за секунды.

ЗЫЫ: А в будущем может понадобиться склеивать не 2 файла, а более 5 файлов..
3
12 февраля 2008 года
Green
4.8K / / 20.01.2000
Теоретически такое в принципе возможно, но...
к примеру, файлы не всегда бывают размера кратным размеру кластера, а чаще наоборот

P.S. А зачем такие огромные файлы? Тем более склеивать их в ещё более большие? IMHO, проще хранить и оперировать именно относительно небольшими файлами.
489
12 февраля 2008 года
NeO_u
277 / / 11.10.2006
Проще-то оно проще. И я это понимаю. Но иногда, возникает такая ситуация, что запись звука происходит на протяжении 2х-3х дней и никто к компьютеру не подходит. А потом, у человека появляется желание объединить две записи в одну, или например даже вставить в середину одной записи другую...
Я уже как только не думал, но в голову ничего умного не приходит..

В кратце, если есть такая возможность надо сделать слияние двух файлов в один без их физического перемещения:-) - Наконец-то правильно сформулировал))
3
12 февраля 2008 года
Green
4.8K / / 20.01.2000
Цитата: NeO_u
Проще-то оно проще. И я это понимаю. Но иногда, возникает такая ситуация, что запись звука происходит на протяжении 2х-3х дней и никто к компьютеру не подходит. А потом, у человека появляется желание объединить две записи в одну, или например даже вставить в середину одной записи другую...
Я уже как только не думал, но в голову ничего умного не приходит..

В кратце, если есть такая возможность надо сделать слияние двух файлов в один без их физического перемещения:-) - Наконец-то правильно сформулировал))



Извини, что лезу не в свое дело, но я бы решал проблему с другого конца: разбивал бы файлы в процессе записи на части и составлял бы простенький журнал. Знаю на собственном опыте (http://www.speechpro.com/rus/), что так делается во многих подобных системах.

Слияние же файлов только усугубит проблему.

По сути вопроса: слить можно, но только в том случае если размер хотя бы первого файла кратен размеру кластера. Возможно есть ещё какие-то ограничения зависящие от типа используемой ФС.
Стандартных средств для этого нет. Можно поискать готовые решения, но не думаю, что их много в связи со специфичностью задачи. Самому сделать программу для решения этой задачи, думаю, не сложно, но придется действовать на уровне формата логического диска, т.е. открыть логический диск, например для win32, при помощи CreateFile("\\\\.\\C:", ....), где C: - конкретный логический диск, а далее самому редактировать таблицу ФС, что зависит от конкретной ФС.

63
12 февраля 2008 года
Zorkus
2.6K / / 04.11.2006
Как я понял, тебе требуется не просто на время слить все файлы как наборы примитивов (байт, секторов..), и потом разъединить, а получить из нескольких файлов определенного формата работоспособный файл такого же формата. Поэтому я не совсем понимаю, причем здесь файловая система - тут надо работать с содержимым файла.
Причем, насколько я знаю, склеивать/разрезать (в том числе) файлы можно в программах профессиональных для работы со звуком. Если же они (ты это имел в виду? ) выполняют такую работу довольно медленно, я не думаю, что можно как-то радикально, на порядки, ускорить этот процесс.
6.8K
13 февраля 2008 года
Аццкий программер
91 / / 27.11.2006
Цитата:
Если же они (ты это имел в виду? ) выполняют такую работу довольно медленно



мне кажется, имеется в виду, что открытие(построение пиктограммы и анализ) в программах типа Саунд Форжа занимают гораздо больше времени, чем склеивание. А "слепое" - не знаю, что в файле, но знаю, где его конец и начало - склеивание лишено этого недостатка.

Идея интересная и, кажется, выполнимая. Фрагментированные файлы на диске(по крайне мере у меня :) ) давольно распространены. Да и в конце-то концов: не зря же в комплекте ОС Виндовс идет "дефрагментация диска" :)

92
15 февраля 2008 года
Тень Пса
2.2K / / 19.10.2006
даже слепое склеивание больших проходит довольно долго. отключи в Adobe Audition построение пиков и посмотри )
489
15 февраля 2008 года
NeO_u
277 / / 11.10.2006
Да, но ведь, обычное перещещение файла из директории в директории занимает секунды...Насколько я понимаю, если мы просто объеденим конец одного файла с началом другого...
Ведь на каждой ФС есть некие обозначение, что типа вот файл начался, а вот он закончился...и сделать, просто, что типа вот файл начался, а закончился он. там где заканчивается второй файл...и получится, что и двух файлов один.
6.8K
15 февраля 2008 года
Аццкий программер
91 / / 27.11.2006
С аудиофайлами не работаю. И, если честно, даже не представляю, как можно соединять файлы, кроме как копирования пиктограммы одного в другой :)

Если это действительно так, значит процесс ускорить нельзя. Бы было можно - этим бы давно воспользовались фирмы-производители пакетов для работы с аудио.
6.8K
15 февраля 2008 года
Аццкий программер
91 / / 27.11.2006
Цитата:
что типа вот файл начался, а закончился он. там где заканчивается второй файл...и получится, что и двух файлов один.



я, кончено, не представляю, как устроены аудиоформаты, но мне кажется, нельзя рассматривать его как текстовый примитив. Ну, в смысле, там же еще, вполне вероятно, есть какая-то служебная информация. И, приклеив один к другому, вполне может получится, что в середине аудиотрека(сразу за окончанием первого файла) будет блок каких-то "не-аудио" данных

489
15 февраля 2008 года
NeO_u
277 / / 11.10.2006
Хм..Может быть, но с другой стороны, возможно такое склеивание реализуется по разному для каждой ФС, а может просто что-то из области "результаты не оправдывают затраты".

Мне для начала просто интересно узнать, как, допустим, NTFS определяет, что начало файла в таком месте, а конец в другом...
Потом можно попопробывать каким-нибудь хитрым образом объеденить конец одного файла и начало другого...
Насколько я понимаю, в каждой файле, в начале хранится информация о нем, там сколько кластеров он занимается итд итп..подредактировав всю нужную информацию, можно объеденить..

ЗЫ: Ну, мне так кажется.
489
15 февраля 2008 года
NeO_u
277 / / 11.10.2006
я, кончено, не представляю, как устроены аудиоформаты, но мне кажется, нельзя рассматривать его как текстовый примитив. Ну, в смысле, там же еще, вполне вероятно, есть какая-то служебная информация. И, приклеив один к другому, вполне может получится, что в середине аудиотрека(сразу за окончанием первого файла) будет блок каких-то "не-аудио" данных



Я понимаю, что его нельзя рассматривать как текстовый примитив...но хочется попробывать объеденить, для начала как текстовый примитив. И если получиться, значит это уже реально...а дальше уже можно будет разбираться как, что и почему:-)

3
15 февраля 2008 года
Green
4.8K / / 20.01.2000
Цитата: NeO_u
Да, но ведь, обычное перещещение файла из директории в директории занимает секунды...


Перемещение личного дела из папки "первокурсники" в папку "выпускники" занимает тоже секунды. :)

Цитата: NeO_u

Насколько я понимаю, если мы просто объеденим конец одного файла с началом другого...
Ведь на каждой ФС есть некие обозначение, что типа вот файл начался, а вот он закончился...и сделать, просто, что типа вот файл начался, а закончился он. там где заканчивается второй файл...и получится, что и двух файлов один.


Цитата: NeO_u
Хм..Может быть, но с другой стороны, возможно такое склеивание реализуется по разному для каждой ФС, а может просто что-то из области "результаты не оправдывают затраты".

Мне для начала просто интересно узнать, как, допустим, NTFS определяет, что начало файла в таком месте, а конец в другом...
Потом можно попопробывать каким-нибудь хитрым образом объеденить конец одного файла и начало другого...
Насколько я понимаю, в каждой файле, в начале хранится информация о нем, там сколько кластеров он занимается итд итп..подредактировав всю нужную информацию, можно объеденить..

ЗЫ: Ну, мне так кажется.


Так ты возьми и посмотри формат какой-нибудь ФС, а не тыкай пальцем в небо. Для простоты возьми сначала FAT.

505
15 февраля 2008 года
vAC
343 / / 28.02.2006
Ну так или иначе придется изменять заголовок RIFF у первого файла (если это wav) и убирать у второго. Поэтому простым склеиванием не обойтись.
Можно реализовать такой вариант:
написать специальный виртуальный драйвер логического диска, который будет делать все нужные преобразования с заголовками и выполнять "склеивание" сколько угодного количества файлов и выдавать это как один файл.

з.ы. если пойти дальше, то можно и эффекты таким образом накладывать. Для этого еще дополнительную информацию хранить надо. И можно будет наделать тысячи 30 гиговых файлов с различным содержанием (утрирую конечно) :)
5
17 февраля 2008 года
hardcase
4.5K / / 09.08.2005
Цитата: NeO_u
Хм..Может быть, но с другой стороны, возможно такое склеивание реализуется по разному для каждой ФС

А вот на FAT32 нельзя сохранить файлы размером более 4Гб...

489
17 февраля 2008 года
NeO_u
277 / / 11.10.2006
Цитата: hardcase
А вот на FAT32 нельзя сохранить файлы размером более 4Гб...



Ну, это понятно, 2*32 - 4294967296 - получается 4Гб.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог