Russian Qt Forum

Qt => Мультимедиа => Тема начата: Disa от Август 14, 2013, 16:44



Название: QAudioRecorder не видит устройства
Отправлено: Disa от Август 14, 2013, 16:44
Добрый день.

Не знаю как побороть. Микрофон подключен, стандартная утилита звукозаписи под виндой его видит. А вот audioRecorder->audioInputs(), где audioRecorder = new QAudioRecorder(this) ничего не выдает. На другом компе ситуация интереснее. Значение из audioRecorder->audioInputs() дает название аудиокарты, когда передаю ее в setAudioInput, записываю в файл звук с аудиокарты, а не с микрофона (то есть весь звук из системы).
Это все на разных машинах под win7x64 (qt 5.1). Под Mintом и XP на одной из них все работает как нужно.

За ранее благодарен!


Название: Re: QAudioRecorder не видит устройства
Отправлено: xokc от Август 14, 2013, 16:55
Надо проверить, что записывает на этих компах стандартный пример из msvc2012\examples\multimedia\audiorecorder\


Название: Re: QAudioRecorder не видит устройства
Отправлено: Disa от Август 15, 2013, 11:14
Спасибо, но, к сожалению, именно на основе этого экзампла я и писал код. У меня такой же форыч для списка устройств, что и там. :/


Название: Re: QAudioRecorder не видит устройства
Отправлено: xokc от Август 15, 2013, 16:40
Qt Multimedia работает в Windows через MME API, которому довольно много лет и оно может драйверами современных звуковых плат поддерживаться мягко говоря кое-как. Я для более-менее нормальной записи звука под Windows пользуюсь RtAudio или portaudio. Они умеют работают с MME, DirectSound, ASIO, WASAPI. Об этом здесь уже говорилось неоднократно. Интегрируются с Qt обе библиотеки довольно прозрачно.


Название: Re: QAudioRecorder не видит устройства
Отправлено: Disa от Август 15, 2013, 17:02
Спасибо большое! Я уже намучился с этим на разных машинах.


Название: Re: QAudioRecorder не видит устройства
Отправлено: Disa от Август 19, 2013, 18:09
Почитал документацию PortAudio и OpenAL, вторая как-то больше приглянулась, т.к. напоминает синтаксисом OpenGL. Ну на вкус и цвет как говорится.

Вопрос:

1). Можно ли каким-то образом увеличить количество видимых для QAudioRecorder или QAudioInput кодеков? Под Win7 у меня видит только pcm и wav и соответсвующие контейнеры. Хотелось бы amr, например. Это резко упростит мне жизнь и не заставит полностью переделывать проект под новую либу.

2). Я не очень в курсе, но если что-то кодировать/декодировать в mp3  lam'ом, это нарушение каких-то лицензий?

3). Ну и глобальный вопрос - нужно писать звук. Писать долго, 8мь часов. Если все пихать в pcm/wav то получиться несколько гигов. В голове пока несколько идей:

   а). Писать в несколько разный файлов, конвертировать чем-то типа ffmpeg'а или lim'а и потом смерживать
   б). Конвертировать в процессе записи звука. Но в этом случае, я не очень в курсе - всегда ли можно конвертировать записываемый звук на ходу?

За ранее благодарен!


Название: Re: QAudioRecorder не видит устройства
Отправлено: kibsoft от Август 19, 2013, 19:45
http://www.prog.org.ru/topic_24657_0.html Вот либу я делаю в свободное время, можно звук и в mp3 кодировать(на лету).
Вкратце: берем AudioGrabber, настраиваем и передаем в объект класса Recorder через setAudioGrabber. Потом настраиваем кодировщик recorder->encoder()->setAudioCodecSettings() и вызываем start у Recorder'а.


Название: Re: QAudioRecorder не видит устройства
Отправлено: Disa от Август 21, 2013, 00:08
Ага, спасибо большое. Начал ковыряться.

Немного Off - можете пж подсказать плату pci или внешний midi интерфейс на 4е и более аудио-входов (3,5), чтобы к каждому из входов можно было бы обратиться по имени или индексу как к разным устройствам?

Спасибо!