Russian Qt Forum
Ноябрь 22, 2024, 17:18 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Симуляция микрофона  (Прочитано 7052 раз)
carrygun
Гость
« : Август 31, 2014, 14:38 »

Всем привет.

Сразу скажу что название, возможно, неподходящее.

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

Я почитал документацию по multimedia и думал что все будет хорошо с QAudioOutput. Сначала я подсмотрел пример и решил действовать в лоб: проиграть семпл на стандартном входе (микрофон), но я слышал этот звук в колонках, никак записать его не удалось. Потом решил писать в поток, но вышло примерно то же самое.
Вот пример:
Код
C++ (Qt)
...
   m_sourceFile.setFileName("test2.wav");
   if (!m_sourceFile.open(QIODevice::ReadOnly)) {
       qDebug() << "Failed to open file!";
       return;
   }
 
   QByteArray sound = m_sourceFile.readAll();
 
   QAudioFormat format = makeFormat();
   m_audioOutput = new QAudioOutput(m_defaultInputDevice, format, this);
   m_output = m_audioOutput->start();
   m_output->write(sound);
...
 

Писать в поток входа не получилось, он доступен только для чтения.
Люди добрые, поделитесь советом, или ссылок накидайте в этом направлении.
Записан
Bepec
Гость
« Ответ #1 : Август 31, 2014, 15:27 »

Цитировать
проиграть семпл на стандартном входе (микрофон), но я слышал этот звук в колонках, никак записать его не удалось.
Это как? Улыбающийся

А по делу - ищите опен сорс проекты по передаче звука аля ventrilo, только умеющими ещё и звук транслировать Улыбающийся
Записан
carrygun
Гость
« Ответ #2 : Август 31, 2014, 15:37 »

Отдельно эти вещи сделать не трудно, а вот скомбинировать как раз не могу.
Записан
Bepec
Гость
« Ответ #3 : Август 31, 2014, 16:18 »

Если нетрудно, выкиньте код как делать по отдельности Улыбающийся Желательно работающий. И я, а то и десятки людей скажут вам спасибо Веселый
Записан
carrygun
Гость
« Ответ #4 : Август 31, 2014, 16:56 »

Как снять звук с микрофона и как вывести в колонки есть в справке по QAudioInput и QAudioOutput соответственно. Вот здесь, например, вывод звука с микрофона на колонки с преобразованием.
Я просто не пойму можно ли средствами Qt подать звук на микрофон программно? Или надо копать вообще в сторону микшера и снимать с выхода а не входа? В общем я в этом не силен, поэтому и совета у вас прошу.
Записан
Bepec
Гость
« Ответ #5 : Август 31, 2014, 17:24 »

Разобьём на части.
Для снятия звука с микрофона класс есть? есть.
А есть ли класс для "впихивания" в него? нет.

Следовательно ничего готового нет. Если и есть, то хитрые обходы и недокументированные возможности, но вряд ли Улыбающийся

 А т.к. работа с микрофоном не кроссплатформенна без Qt, то нужно копать в сторону Api ОС.
Записан
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #6 : Август 31, 2014, 22:07 »

Зависит от звуковой карты. Она или может записывать с проигрывающего тракта или не может. Конкретно с микрофонного входа, в любом случае, ты воспроизводимый звук не получишь.

Запись воспроизводимого звука как правило управляется в микшере звуковухи. К примеру под Linux, при использовании alsamixer на некоторых звуковухах можно включить эту возможность. Под виндой я хз.

ЗЫЖ Самое надежное решение - с твоей прогой прикладывать проводок, который будет соединять выход наушников с микрофоном Веселый
Записан

Гугль в помощь
xokc
Птица говорун
*****
Offline Offline

Сообщений: 976



Просмотр профиля
« Ответ #7 : Сентябрь 02, 2014, 08:17 »

Поддержу предыдущего оратора. Добавлю, что эта возможность скорее зависит от конкретного набора драйверов, используемого API и даже версии ОС. Универсального решения типа "воткнул и работает" не получится. Хотя вариант-то такой есть - называется Virtual Audio Cable (http://software.muzychenko.net/eng/vac.htm), правда только под Windows и за деньги. Там можно соединить выходы и входы звуковых плат и программ "виртуальным кабелем", что и позволит решить твою задачу.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.102 секунд. Запросов: 23.