Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.11.24;
Скачать: CL | DM;

Вниз

Как несколько wav файлов склеить в один?   Найти похожие ветки 

 
Aristarh ©   (2003-10-30 15:45) [0]

Можно ли сделать подобное средствами делфи? Если нет, то возможно существуют какие-либо утилиты командной строки, которые позволяют любой внешней программе производить "склеивание"...


 
Кулюкин Олег ©   (2003-10-30 15:47) [1]

COPY file1 + file2, file3

Вроде не соврал.

А на Дельфи - вычитывайте в TStream.


 
isko ©   (2003-10-30 15:57) [2]

поищи формат wav файла - там просто шапка и дальше данные - первый канал второй канал и т.д.
тебе всего лишь нужно будет перекопировать данные и изменить данные в шапке.


 
Opuhshii ©   (2003-10-30 16:00) [3]

а что вы подразумеваете под склеиванием?


 
Opuhshii ©   (2003-10-30 16:01) [4]

2isko © (30.10.03 15:57) [2]
а ещё сменить глубину, частоту при их несовпадении,..


 
Brahman ©   (2003-10-30 16:01) [5]

Кулюкин Олег © (30.10.03 15:47) [1]
К сожалению - соврал:)

wave-формат имеет заголовок и простое "склеивание" тут не поможет

struct {
char id[4];
DWORD len;
} riff_hdr;
char wave_id[4];

Вот это надо "отлепить" от второго файла, разницу "прилепить" к первому и скорректировать len в первом заголовке.
Речь о RIFF формате.


 
WithOut Any ... ©   (2003-10-30 16:03) [6]

У Кулюкин Олег © (30.10.03 15:47) [1]
Все правильно, за исключением лишней запятой и пропущенного ключа, то есть:
COPY/b file1 + file2 file3


 
SPeller ©   (2003-10-30 16:04) [7]

А лучше воспользоваться SoundForge.


 
Aristarh ©   (2003-10-30 16:04) [8]

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


 
Кулюкин Олег ©   (2003-10-30 16:05) [9]


> Brahman © (30.10.03 16:01) [5]
> К сожалению - соврал:)

Вот я гад :))


> WithOut Any ... © (30.10.03 16:03) [6]
> У Кулюкин Олег © (30.10.03 15:47) [1]
> Все правильно за исключением лишней запятой и пропущенного ключа

В общем правильно, но в корне неверно :))))


 
Brahman ©   (2003-10-30 16:09) [10]

WithOut Any ... © (30.10.03 16:03) [6]

Не надо советовать не по делу.
Итоговый файл воспроизведется только по file1.


 
Кулюкин Олег ©   (2003-10-30 16:11) [11]


> Brahman © (30.10.03 16:09) [10]

Судя по пояснениям автора, он склеивает порезанный wav.
А вот несколько настоящих вавов действительно склеивать бесполезно.


 
Brahman ©   (2003-10-30 16:13) [12]

Бесполезно "склеивать" куски wav, если не откорректирован заголовок у первого.


 
Кулюкин Олег ©   (2003-10-30 16:15) [13]


> Brahman © (30.10.03 16:13) [12]
> Бесполезно "склеивать" куски wav, если не откорректирован
> заголовок у первого.

Да ну?
Если я сам его порезал, а затем склеил?


 
Anatoly Podgoretsky ©   (2003-10-30 16:17) [14]

Он не то чтобы хочет склеить но зачем то удалить микропаузу при передаче, видимо опять не совсем четко объяснил, вместо того что нужно, объяснил технические детали.


 
WithOut Any ... ©   (2003-10-30 16:30) [15]

В ответ на"
> WithOut Any ... © (30.10.03 16:03) [6]
> У Кулюкин Олег © (30.10.03 15:47) [1]
> Все правильно за исключением лишней запятой и пропущенного ключа
В общем правильно, но в корне неверно :))))

Ответ:
Уговорил, проверил и согласился. Но другие форматы обычно таким образом "склеивал"
Сорри


 
Brahman ©   (2003-10-30 16:35) [16]

Кулюкин Олег © (30.10.03 16:15) [13]
Если "склеивание" посредством copy - то бесполезно.
Если иными средствами с редактированием суммарной длины в заголовке, то - Ок.


 
blackman ©   (2003-10-30 16:55) [17]

>Если "склеивание" посредством copy - то бесполезно.
Это ты не прав.
COPY [/D] [/V] [/N] [/Y | /-Y] [/Z] [/A | /B] источник [/A | /B]
[+ источник [/A | /B] [+ ...]] [результат [/A | /B]]

источник Имена одного или нескольких копируемых файлов.
/A Файл является текстовым файлом ASCII.
/B Файл является двоичным файлом.
/D Указывает на возможность создания зашифрованного файла
результат Каталог и/или имя для конечных файлов.
/V Проверка правильности копирования файлов.
/N Использование, если возможно, коротких имен при копировании
файлов, чьи имена не удовлетворяют стандарту 8.3.
/Y Подавление запроса подтверждения на перезапись существующего
конечного файла.
/-Y Обязательный запрос подтверждения на перезапись существующего
конечного файла.
/Z Копирование сетевых файлов с возобновлением.

Ключ /Y можно установить через переменную среды COPYCMD.
Ключ /-Y командной строки переопределяет такую установку.
По умолчанию требуется подтверждение, если только команда COPY
не выполняется в пакетном файле.


 
Anatoly Podgoretsky ©   (2003-10-30 16:58) [18]

Если строго по вопросу, то COPY полность подходит и ничего искать не надо.


 
Aristarh ©   (2003-10-30 17:05) [19]

>Anatoly Podgoretsky © (30.10.03 16:17) [14]
>видимо опять не совсем четко объяснил, вместо того что нужно,
>объяснил технические детали.

Лучше пояснение - это пример. Как в вопросе, так и в ответе.
Есть 4 wav файла:
пятнадцать.wav
рублей.wav
пятьдесят.wav
копеек.wav

Программа звонит абоненту, абонент снимает трубку и программа
начинает передавать в линию первый файл "пятнадцать.wav".
Как только этот файл передан, сразу за ним начинает передаваться
файл "рублей.wav" и т.д. В результате абонент должен услышать
фразу "пятнадцать рублей пятьдесят копеек".
Но перед каждым файлом происходит небольшая задержка, в
результате глотаются первые слоги слов и абонент слышит:
"..надцать ..блей ..десят ..пеек". Это недопустимо.

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


 
Anatoly Podgoretsky ©   (2003-10-30 17:21) [20]

Вот это совсем другое объяснение, такое как должно быть


 
Manulo ©   (2003-10-30 17:22) [21]

А если на те несколько миллисикунд тишину записать? Тогда глотнётся тишина и абонент услышит кодовую фразу


 
Aristarh ©   (2003-10-30 17:28) [22]

>Manulo © (30.10.03 17:22) [21]
>А если на те несколько миллисикунд тишину записать?

Совершенно верно, именно так и я поступил вначале. Добавил в
начало каждого файла по 200 милисекунд тишины. Вроде сработало,
но предложения с задержками звучат некрасиво и неестественно,
поэтому пробую сейчас вариант со склеиванием нескольких файлов
в один. :)


 
blackman ©   (2003-10-30 17:29) [23]

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


 
Brahman ©   (2003-10-30 17:37) [24]

blackman © (30.10.03 16:55) [17]

Не надо мне объяснять про copy - я в курсе и давно.
Я говорю о том, что если через copy объединить два и более файлов *.wav, то воспроизведется только первый из них.

Желающие могут проверить.


 
Brahman ©   (2003-10-30 17:40) [25]

Aristarh © (30.10.03 17:28) [22]
Вот это правильно, тем более, что ничего сложного в этом нет.
Только не copy:)


 
Aristarh ©   (2003-10-30 17:48) [26]

>Brahman © (30.10.03 17:40) [25]

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


 
Brahman ©   (2003-10-30 17:53) [27]

Добавь шум:)
Без шуток.
А еще лучше прогонять очередной wav через элементарный задерживающий элемент на n-тактов и в окончание добавлять приглушенный задержанный сигнал очередного слова.


 
blackman ©   (2003-10-30 17:58) [28]

>Желающие могут проверить.
Пугаешь ?
Конечно первый поскольку заголовок будет только первый :)
Формат wav здесь:
http://www.interdoc.by.ru/ext_w.htm
http://www.interdoc.by.ru/archive_a/avi_over.zip


 
Brahman ©   (2003-10-30 18:03) [29]

blackman © (30.10.03 17:58) [28]

Спасибо, но формат wav помню почти наизусть.
Ну и зачем тогда увеличивать размер файла путем copy ? :)


 
blackman ©   (2003-10-30 18:12) [30]

>Brahman
В первом измени длину и ... OK


 
Aristarh ©   (2003-10-30 18:15) [31]

>Brahman © (30.10.03 17:53) [27]
>А еще лучше прогонять очередной wav через элементарный
>задерживающий элемент на n-тактов и в окончание добавлять
>приглушенный задержанный сигнал очередного слова.

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


 
Brahman ©   (2003-10-30 18:21) [32]

blackman © (30.10.03 18:12) [30]

См Brahman © (30.10.03 16:13) [12]

Aristarh © (30.10.03 18:15) [31]
Я имел в виду простейший ревербератор.
Есс-но добавлять надо от предыдущего слова.


 
wicked ©   (2003-10-30 20:11) [33]

посоветую, об чем читать в MSDN:
mmioOpen / mmioClose
mmioDescend / mmioAscend
mmioRead / mmioWrite
mmioCreateChunk

а также, если форматы файлов разные (частоты дискретизации, количество каналов, биты на семпл), то советую приглядеться к
acmStreamOpen / acmStreamClose
acmStreamSize
acmStreamPrepareHeader / acmStreamUnprepareHeader
acmStreamConvert

API-шка там запутанная, но разобраться можно... если надо, дам рабочий пример, но он писан на билдере и заточен под memory mapped files...


 
Aristarh ©   (2003-10-30 22:48) [34]

>wicked © (30.10.03 20:11) [33]
>а также, если форматы файлов разные (частоты дискретизации,
>количество каналов, биты на семпл)

Нет все файлы я привел к одному формату.

>если надо, дам рабочий пример, но он писан на билдере и заточен
>под memory mapped files...

Буду весьма признателен, с билдером тоже в ладах... :)
support@telenet.dn.ua


 
Сергей Суровцев ©   (2003-10-30 23:41) [35]

>Aristarh © (30.10.03 17:05) [19]
>пятнадцать.wav
>рублей.wav
>пятьдесят.wav
>копеек.wav

Я себе это так живенько представил:
пятнадцать. Вав!
рублей. Вав!
пятьдесят. Вав!
копеек. Вав!
Программа для выколачивания денег :))
А можно еще любимый журналистский звук записать "Эээээээ" в начале и в конце каждого слова.


 
Aristarh ©   (2003-10-31 01:01) [36]

>Сергей Суровцев © (30.10.03 23:41) [35]
>А можно еще любимый журналистский звук записать "Эээээээ" в
>начале и в конце каждого слова.

Возможно выход, серьезно рассмотрю этот вариант :))
Только начальную фразу "с вами говорит компьютер..." надо будет
заменить на "с вами говорит Константин Эрнст..."



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

Текущий архив: 2003.11.24;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.017 c
1-78978
velial
2003-11-14 14:40
2003.11.24
MDI одна форма


1-79029
ASt
2003-11-13 17:58
2003.11.24
Клик мыши


3-78852
Andrey V.
2003-11-06 07:59
2003.11.24
Поле типа DATE и значение NULL


1-79049
Татьяна
2003-11-13 14:38
2003.11.24
Найти компоненту


1-78949
R
2003-11-12 04:08
2003.11.24
Оптимальность и целесообразность применения констант