Форум программистов, компьютерный форум, киберфорум
Delphi
Войти
Регистрация
Восстановить пароль
Другие темы раздела
Delphi Функция округления https://www.cyberforum.ru/ delphi/ thread492923.html
Надо округлить число до 2 знаков после запятой. Можт знает кто, есть ли стандартные функции? Я таких не нашел и единственное что придумал - число в строку, строку резать, снова в число. Настоящий...
Delphi Треды (TThreads) и передача даных из них в главный процесс...
если я вдруг, захотев вставить новый элемент в TList, произнесу часть заклинания (в отделном треде) так: Synchronize(InsertComp); ...... procedure TThread1.InsertComp; var PStr1:...
Delphi не дать срубить прогу через "TaskManager"->"End Process Tree" https://www.cyberforum.ru/ delphi/ thread492849.html
из одной программы запускается другая (они осуществляют контроль работы друг друга), через 'TaskManager'->'End Process Tree' - благополучено вырубаются обе :( вопрос, как избежать возможности...
Delphi Где скачать Delphi 2.0? Вам покажется следующий вопрос. Кто может дать или дать ссылку на borland Delphi 2.0? Очень нужен. Плиз.!!!!! Заранее благодарен. https://www.cyberforum.ru/ delphi/ thread492832.html
Access violation at address 00403E1D in module 'Project.exe' Delphi
Обясните как етой ошибки не било Access violation at address 00403E1D in module 'Project.exe'. Read of address 00000014 Access violation at address 002CDAC6 in module 'vcl70.bpl'. Read of address...
Delphi Изменение выделенной строки в ListBox https://www.cyberforum.ru/ delphi/ thread492717.html
Целое сочинение написал... Не давно тыт был пример -- как отследить изменение выделенного элемента в ListBox. Если изменять мышой или клавиатурой, то работает все прекрасно. Вызывается...
Delphi Нужен экспорт выбраной в DBGrid (delphi7) информации в MSword. Доброго времени суток!!! Возникла надобность экспорта выбраной в DBGrid (delphi7) информации в MSword! Кто делал помогите советами и рекомендациями!!! Зарание благодарен в долгу не останусь!!! :) https://www.cyberforum.ru/ delphi/ thread492658.html По нажатию Ctrl+Alt+v перевести переменную в другое состояние. Как? Delphi
Доброго времени суток, господа специалисты! 1. Помогите мне вот в каком вопросе. Нужно по условию если пользователь нажмет вместе Ctrl+Alt+v перевести переменную в другое состояние. Это делаю вот...
Delphi Toolbar и DDS текстуры https://www.cyberforum.ru/ delphi/ thread492587.html
Какой командой помещается прога в Toolbar и какой компонент добавляет поддержку формата .dds?
Delphi ShellExecute с параметром Как сделать поддержку программой комманд??? Тоесть запуск не C:fdisk.exe, а C:fdisk.exe /all ??? https://www.cyberforum.ru/ delphi/ thread492556.html
Delphi Где скачать набор компонентов HighGear?
Подскажите, где можно скачать бесплатно набор компонентов HighGear?
Delphi Документация по AsyncPro Кто подскажет, где можно скачать бесплатно документацию по набору компонентов AsyncPro на русском языке? https://www.cyberforum.ru/ delphi/ thread492532.html
1 / 1 / 1
Регистрация: 29.04.2011
Сообщений: 28
01.05.2011, 14:12 0

Сравнение двух звуковых файлов. - Delphi - Ответ 2696058

01.05.2011, 14:12. Показов 4494. Ответов 2
Метки (Все метки)

Ответ

Могу тебя обрадовать на Delphi это можно реализовать... Только вот слишком сложна проблема, которую ты собираешься решать.

Единственное, чем могу тебе помочь, это как прочитать WAVE файл формата PCM (Если интересует, как прочитать WAVE файл другого формата, например ADPCM или MPEG Layer 3, тоже могу рассказать, свяжись по ICQ или отправь письмо на мыло)…

Сначала опишу структуру WAVE файла:

4 Байта а Глобальный фрагмент WAVE файла (должно быть RIFF)
4 Байта а Размер глобального фрагмента ( равен размеру всего файла, за исключением 4 ёх байт глобального идентификатора RIFF )
4 Байта а Дополнительный идентификатор WAVE
4 Байта а Идентификатор формата определяющий формат звуковых данных, fmt ( последним символом является пробел ), этот идентификатор обозначает что вслед за ним следует структура описывающая формат исходных данных..
4 Байта а размер структуры описывающей формат исходных данных

{------------Структура описывающая формат исходных данных---------------------}

2 Байта а Идентификатор типа звукового формата. В модуле MMSystem определяются константы для многих типов форматов, например WAVE_FORMAT_PCM для данных в формате PCM…
2 Байта а Количество каналов, например, 1 ( моно ), 2 ( Стерео )
4 Байта а Частота дискретизации, т.е. количество выборок за секунду
4 Байта а Скорость воспроизведения
2 Байта а Используется для выравнивания на границу блока
2 Байта а Количество Бит в выборке сигнала. Стандартные значения – 8 (Бит) и 16 Бит
2 Байта а Размер дополнительных данных, распологающихся вслед за данной структурой в памяти на диске..

{---------------------------------------------------------------------------------------------------}

4 Байта а Идентификатор данных data означает, что вслед за ним будут идти данные
4 Байта а Размер данных идущих вслед за data

Далее идут непосредственно сами данные, размер которых определяется предыдущим полем…

А теперь приведу пример функции загружающей блок звуковых данных в память.
В качестве входных параметров указывается Имя загружаемого Wave файла ( FileName ), Указатель в который будет помещен указатель на выделенный блок звуковых данных (Buffer ), переменная в которую будет помещён Размер звуковых данных (BufferSize), Структура в которую будет занесена информация о формате звуковых данных )…
Если во время загрузки звуковых данных в память произойдёт ошибка, то функция возвратит False…

Uses MMSystem;

function LoadSound(const FileName:String; Buffer : Pointer; out BufferSize : Cardinal; out WaveFormat : TwaveFormatex ):Boolean;
var
F :File;
Id :array[0..8] of Char;
SizeHeaderWORD;
begin

Result := False;

//Проверяем существует ли указанный файл
If not FileExists(FileName) then Exit;

//Открываем файл
AssignFile(F,FileName);
try
Reset(F,1);

//Пропускаем первые 8 Байтов, это RIFF + размер глобального идентификатора
Seek(F,8);

//Считываем 8 Байтов
Blockread(F,Id,8);

//Если этот идентификатор не Wavefmt, то значит файл повреждён
if AnsiStrLiComp(Id,'WAVEfmt ',8)<>0 then
begin
CloseFile(F);
Exit;
end;

//Считываем размер структуры описывающей размер структуры описывающей формат звуковых данных
BlockRead(F,SizeHeader,4);

//Е сли размер структуры описывающей формат звуковых данных, больше максимально допустимой для формата PCM, то с такими файлами не работаем
If SizeHeader>SizeOf(TWaveFormatex) then
begin
CloseFile(F);
Exit;
end;

//Считываем структуру описывающую формат исходных данных
BlockRea

Вернуться к обсуждению:
Сравнение двух звуковых файлов. Delphi
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.05.2011, 14:12
Готовые ответы и решения:

Хранение звуковых файлов
Скажите пожалуйста, можно ли хранить в БД Access звуковые файлы (wav) и подключать их по id, в...

Сравнение двух текстовых файлов
Имеется 2 файла txt. Нужно сравнить эти файлы.Они почти идентичны, но в начале первого файла есть...

Сравнение двух огромных (!) файлов
Привет. Потребовалось сравнивать текстовые файлы (несколько файлов сравниваются с другим): Файл...

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

2
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.05.2011, 14:12
Помогаю со студенческими работами здесь

Сравнение двух текстовых файлов без выгрузки в Memo
Здравствуйте. Стоит задача сравнения двух текстовых файлов. До этого, делал так: var a,b:string;...

Сравнение даты изменения двух файлов с использованием edit
Подскажите пожалуйста долгое время бьюсь над способом сравнения двух одинаковых файлов. в двух...

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

Воспроизвести несколько звуковых файлов одновременно
Как можно воспроизвести несколько файлов одновременно? SendMCIcommand выдает ошибку, что...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru