Форум программистов, компьютерный форум CyberForum.ru

Захват звука - C++

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 24, средняя оценка - 4.92
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
16.12.2009, 05:32     Захват звука #1
Надо захватить звук в буфер для анализа. Ёмкость буфера искуственно ограничить и хранить в нём только последние n секунд. При поступлении кажого нового данного с микрофона самое старое выбрасывать.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
solar_wind
 Аватар для solar_wind
741 / 732 / 39
Регистрация: 06.07.2009
Сообщений: 2,940
Завершенные тесты: 1
16.12.2009, 08:44     Захват звука #2
Все зависит от того под какой операционкой, на каком языке программирования пишешь...
Или ты хочешь железку спаять, которая будет этот звук перехватывать?
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
16.04.2010, 06:33  [ТС]     Захват звука #3
c++ и винда.
solar_wind
 Аватар для solar_wind
741 / 732 / 39
Регистрация: 06.07.2009
Сообщений: 2,940
Завершенные тесты: 1
16.04.2010, 06:41     Захват звука #4
Цитата Сообщение от taras atavin Посмотреть сообщение
c++ и винда.
Это тоже довольно абстрактно.
На MFC я использовал mmsystem.h, mmreg.h, наверное это будет работать и на WinAPI, не проверял.
Можно работать с DirectDraw.
В Qt то делается через QAudioInput
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
16.04.2010, 06:48  [ТС]     Захват звука #5
Microsoft developmet studio 6.0, Windows XP, DirectX SDK. MFC что такое? Без использования аналогов VCL.
Цитата Сообщение от vitaly1981 Посмотреть сообщение
DirectDraw.
Выбираем этот путь. Как именно сделать? Я в звуке даже не новичок, а желающий начать. Сможешь объяснить недочайнику, как это делается?
solar_wind
 Аватар для solar_wind
741 / 732 / 39
Регистрация: 06.07.2009
Сообщений: 2,940
Завершенные тесты: 1
16.04.2010, 06:57     Захват звука #6
Цитата Сообщение от taras atavin Посмотреть сообщение
Microsoft developmet studio 6.0, Windows XP, DirectX SDK. MFC что такое? Без использования аналогов VCL.
Выбираем этот путь. Как именно сделать? Я в звуке даже не новичок, а желающий начать. Сможешь объяснить недочайнику, как это делается?
MFC это Microsoft Foundation Classes http://ru.wikipedia.org/wiki/MFC
C DirectDraw пока работать реально не приходилось, там тоже куча замутов, но вроде как возможностей тоже много. Качай описания работы с DirectDraw и разбирайся. Там все не так просто, что бы что то написать нужно вникнуть в систему организации звука в Windows, с первого прочтения не поймешь скорее всего ).
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
16.04.2010, 07:53  [ТС]     Захват звука #7
Как раз по этой ссылке:
Библиотека MFC, как и ее основной конкурент, Borland VCL...
Значит, без MFC. GUI только API и директом.
solar_wind
 Аватар для solar_wind
741 / 732 / 39
Регистрация: 06.07.2009
Сообщений: 2,940
Завершенные тесты: 1
16.04.2010, 07:59     Захват звука #8
mmsystem.h кажется из без MFC должен работать, нужно проверять.
AlexSt
 Аватар для AlexSt
59 / 59 / 3
Регистрация: 13.01.2009
Сообщений: 296
28.06.2010, 06:10     Захват звука #9
для интересующихся
http://subscribe.ru/archive/comp.sof.../04154450.html

solar_wind
 Аватар для solar_wind
741 / 732 / 39
Регистрация: 06.07.2009
Сообщений: 2,940
Завершенные тесты: 1
28.06.2010, 06:43     Захват звука #10
Цитата Сообщение от AlexSt Посмотреть сообщение
для интересующихся
http://subscribe.ru/archive/comp.sof.../04154450.html
Стоит только отметить что данный материал предназначен только для windows XP , под Вистой может что то и будет работать, под семеркой не будет вообще, проверено.
ni_ko
0 / 0 / 0
Регистрация: 20.01.2015
Сообщений: 2
20.01.2015, 13:41     Захват звука #11
Цитата Сообщение от solar_wind Посмотреть сообщение
В Qt то делается через QAudioInput
можете поподробнее рассказать? у меня такая же задача, нужно в реальном времени получать кусок захваченного звука определенной длинны.
пробовал сделать так:

C++
1
2
3
4
5
6
QAudioInput*        m_audioInput;
QIODevice*          m_audioIODevice;
 
...инициализация m_audioInput
 
m_audioIODevice = m_audioInput->start();
а что дальше делать не знаю

как из m_audioIODevice брать кусок данных нужной длинны?
как после этого очищать буфер, потому что данные, после того как я их забрал, мне больше не нужны в буфере
при воспроизведении из файла использовал audioNotify() чтобы по событию делать нужную обработку, а тут не найду что мне нужно
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.01.2015, 13:51     Захват звука
Еще ссылки по теме:

C++ WinAPI Захват видео с камеры
C++ Захват файлов
C++ Захват видео с экрана
Лямбды и захват переменных C++
Бесконечный захват памяти C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
solar_wind
 Аватар для solar_wind
741 / 732 / 39
Регистрация: 06.07.2009
Сообщений: 2,940
Завершенные тесты: 1
20.01.2015, 13:51     Захват звука #12
ni_ko, Вот здесь посмотри, я выкладывал:
Баг QAudioInput + readyRead
Yandex
Объявления
20.01.2015, 13:51     Захват звука
Ответ Создать тему
Опции темы

Текущее время: 17:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru