Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Мультимедиа
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 22.12.2012, 01:45
Dmitry_DM Dmitry_DM вне форума
Активный
 
Регистрация: 07.08.2012
Сообщения: 258
Версия Delphi: Delphi 7
Репутация: 11
По умолчанию Запись звука

Здравствуйте! Есть проект, он служит для прорисовки звуковой волны при вхождении звука через микрофон. Собственно вопрос: как сделать, что бы при нажатии на кнопку программа сохраняла wav, который услышала.
Код небольшой.
Спасибо тем, кто откликнется помочь..
Вложения
Тип файла: rar Sound.rar (242.3 Кбайт, 32 просмотров)
Ответить с цитированием
  #2  
Старый 22.12.2012, 11:05
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Все просто, в том месте, где снимаешь данные с микрофона - пишешь их в файл, в файле предватительно заполняешь RIFF шапку (частота дискретизации, каналы, кол-во бит, смещение на начало данных и т.д.).
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
Этот пользователь сказал Спасибо M.A.D.M.A.N. за это полезное сообщение:
Dmitry_DM (22.12.2012)
  #3  
Старый 22.12.2012, 17:00
Dmitry_DM Dmitry_DM вне форума
Активный
 
Регистрация: 07.08.2012
Сообщения: 258
Версия Delphi: Delphi 7
Репутация: 11
По умолчанию

Цитата:
Сообщение от M.A.D.M.A.N.
Все просто, в том месте, где снимаешь данные с микрофона - пишешь их в файл, в файле предватительно заполняешь RIFF шапку (частота дискретизации, каналы, кол-во бит, смещение на начало данных и т.д.).
Можно и так, спасибо. Попробую найти, где там место приема сигнала..
Ответить с цитированием
  #4  
Старый 22.12.2012, 19:00
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Код:
procedure OnWaveIn(var Msg: TMessage); message MM_WIM_DATA;

data16 := PData16(PWaveHdr(Msg.lParam)^.lpData);

собс-но этот data16 и записывать.

так же всякие там частоты дискретизации устанавливаются здесь:

Код:
    with header do begin
      wFormatTag := WAVE_FORMAT_PCM;
      nChannels := 1; 
      nSamplesPerSec := discret;
      wBitsPerSample := integer(Bits16) * 8 + 8;
// Число байт в выборке для всех каналов
      nBlockAlign := nChannels * (wBitsPerSample div 8);
// Число байт в секундном интервале для стереосигнала
      nAvgBytesPerSec := nSamplesPerSec * nBlockAlign;
// Для формата РСМ строка не нужна
      cbSize := 0;
    end;
соб-сно их и надо в заголовок вписать.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
Этот пользователь сказал Спасибо M.A.D.M.A.N. за это полезное сообщение:
Dmitry_DM (22.12.2012)
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 02:55.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter