Publiqué esta pregunta en el foro de Qt, pero no recibí ninguna respuesta. Es por eso que lo estoy publicando aquí.Qt - cómo grabar y reproducir sonido simultáneamente
Quería saber si hay alguna forma de grabar y reproducir sonido al mismo tiempo en Qt. Quiero grabar sonido desde un micrófono y, al mismo tiempo, quiero reproducirlo en el altavoz/auriculares.
¿Hay alguna manera de hacer esto en Qt? ¿O necesito usar otra biblioteca?
Sería genial si la solución es multiplataforma (necesito cubrir ventanas, linux y mac). Si no es posible, entonces una solución de Linux funcionará.
Estoy usando Qt 4.7 por cierto.
Editar
se da Mi última aplicación here. Creé una subclase del QIODevice y volví a implementar su método writeData y readData para que la lectura y la escritura se puedan realizar con un búfer circular. He hecho esto según this suggestion. Este código también no funciona porque la instancia QAudioOutput enfrenta Underrun Error
, que según this documentation significa -
Los datos de audio no está siendo alimentado al dispositivo de audio a una velocidad suficientemente rápida
I han aplicado un truco para resolver este problema temporalmente. En el método outputStateChanged
, estoy verificando si el estado de la salida ha cambiado a IDLE
y si lo ha hecho, estoy nuevamente llamando al método start()
, especificando el buffer común. No quiero usar esto como una solución permanente porque se siente muy hacky y porque estoy tragando un error sin investigar adecuadamente sus motivos.
¿Qué debo hacer para solucionar este problema?
También traté de resolver esto usando Phonon pero fallado porque no tengo suficiente conocimiento de este módulo.
@BrianRoach: No he intentado nada, porque no he podido encontrar la manera de comenzar. Sé que puedo tomar entrada de sonido usando QAudioInput y para reproducir un sonido puedo usar QAudioOutput, pero ambos funcionan en un archivo, es decir, QAudioInput almacena la entrada en un archivo y luego QAudioOutput reproduce los sonidos de ese archivo. Este enfoque seguramente no funcionará en el escenario dúplex completo, ¿verdad? Encontré algunas de las respuestas anteriores, pero todas son bastante antiguas y sugieren usar otras bibliotecas como openAL, portAudio, etc.Quería saber si hay alguna solución disponible que use bibliotecas Qt. –