elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Hacer grabación con micrófono en cpp
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Hacer grabación con micrófono en cpp  (Leído 6,037 veces)
Kaxperday


Desconectado Desconectado

Mensajes: 702


The man in the Middle


Ver Perfil WWW
Hacer grabación con micrófono en cpp
« en: 6 Octubre 2014, 23:16 pm »

Hola a todos, estoy intentando hacer una funcion en cpp que grabe archivos de audio en formato ".bmp" o ".mp3" y a ser posible controlar el tiempo de recogida de datos.

Ahora no puedo subir codigos y no puedo aportar mas información.

 Me podeis pasar el codigo, decirme como hacerlo o encontarlo lo agradeceria.

Aportare mas datos y codigo mas tarde, gracias.

Saludos.


« Última modificación: 7 Octubre 2014, 16:51 pm por Eternal Idol » En línea

Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.
engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Hacer grabacion con microsofo en cpp
« Respuesta #1 en: 6 Octubre 2014, 23:36 pm »

Citar
Ahora no puedo subir codigos y no puedo aportar mas información.

 Me podeis pasar el codigo, decirme como hacerlo o encontarlo lo agradeceria.

por que no puedes subir códigos? quien lo prohíbe?

no se dan codigos hechos, eso si va contra las reglas del foro...

quieres guardar .mp3 y .bmp pero desde donde? cual es la fuente? si la fuente es la misma que el resultado con un abrir y escribir archivo en modo binario bastaría


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re:
« Respuesta #2 en: 6 Octubre 2014, 23:58 pm »

Si buscas grabar audio, te muestro un resultado de Google, (gran empresa, mejor buscador): http://www.dreamincode.net/forums/topic/208153-sound-recorder-using-the-low-level-windows-api-in-c/
En línea

Kaxperday


Desconectado Desconectado

Mensajes: 702


The man in the Middle


Ver Perfil WWW
Re: Hacer grabacion con microsofo en cpp
« Respuesta #3 en: 7 Octubre 2014, 00:21 am »

Hola no podía subir código porque no estaba con el ordenador, sí con el móvil. De todas formas si hago un POST con la intención de aprender a grabar voz con cpp es porque no se como hacerlo y creédme que ya he googleado bastante. Creo haber conseguido hacer captura con webcam y grabar vídeo, ahora busco grabar audio, y no encuentro ningún código ni nada por internet de momento, por lo que ví preciso hacer el tema.

Destacar que no quiero usar programas externos, ahora mi internet es prácticamente nulo por lo que no puedo hacer más de escribir este mensaje, he visitado la página y parece interesante mañana me pondré a ello, de todas formas leí algo de waveln() que grababa audio pero no encontré nada de ella ni ejemplos librerías nada.

También he pensado en hacer un vídeo y pasarlo a ".mp3" cosa que de primeras no sabría hacer, y demás de todas formas mañana me miro el link que me pasaste con detalle, aunque de primeras veo mucho código y no lo guarda en archivo, no sé gracias y mañana os comento.

Saludos.
En línea

Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.
MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.470


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: Hacer grabación con micrósono en cpp
« Respuesta #4 en: 7 Octubre 2014, 01:09 am »

Tuve que leer el thread completo porque no tenía idea de lo que un micrósono (o microsofo) era...  :xD :xD :xD

@Kaxperday: Sigue los consejos de ivancea96 y busca en google. Hay muchos ejemplos en la web acerca de lo que quieres hacer. Con respecto a MP3, la lib lame es la más usada y es GPL.

Saludos!
En línea

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."

Kaxperday


Desconectado Desconectado

Mensajes: 702


The man in the Middle


Ver Perfil WWW
Re: Hacer grabación con micrófono en cpp
« Respuesta #5 en: 7 Octubre 2014, 10:06 am »

Vaya me he ojeado el código de ivancea y no sé en que momento comienza a grabar el audio pero lo menos hay 10 archivos ".c" es dificil y más sin saber de interfaz gráfica de ventanas.

Por lo de lame acabo de visitar la página he intentado descargarlo y todos los archivos son ".tar.gz" yo lo quiero para windows, y no encontré ningún ".zip" ni ".rar" ni código fuente.

http://sourceforge.net/projects/lame/files/lame/3.99/

Saludos.
« Última modificación: 7 Octubre 2014, 10:10 am por Kaxperday » En línea

Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.
ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Hacer grabación con micrósono en cpp
« Respuesta #6 en: 7 Octubre 2014, 11:27 am »

WinRar descomprime los .tar.gz, si es lo que preguntas.
En línea

Kaxperday


Desconectado Desconectado

Mensajes: 702


The man in the Middle


Ver Perfil WWW
Re: Hacer grabación con micrósono en cpp
« Respuesta #7 en: 7 Octubre 2014, 14:07 pm »

Vaya gracias ahora me entero y el zip también vale, ahora bien tengo unas 15 carpetas y muchos archivos que no se para que valen para muchos sistemas operativos, y varios proyectos en cpp, ¿se supone que tengo que escarbar de ahí una función que me grabe el archivo de audio, es que estoy hecho un lío, ¿sabéis que directorio es el de windows donde está el proyecto que graba el audio? Así al menos me estudio ese y no 15 más como él xD, descarto la carpeta que se llama debian y mac.

Y una vez encuentre el codigo con su proyecto y su main, bueno ahí ya me las trataré de apañar.

Edito:
Citar
quieres guardar .mp3 y .bmp pero desde donde? cual es la fuente? si la fuente es la misma que el resultado con un abrir y escribir archivo en modo binario bastaría

Claro esa es la pregunta ¿como extraigo los datos binarios que recibe el micrófono? Luego ya sería guardarlos en un archivo ".mp3" o ".bmp" o lo que sea supongo, pero como hago la función de extraer esos bytes del micrófono es la pregunta.

La verdad esto de lame no se nada, estaré estudiando el link de ivancea y buscaré donde extrae datos aunque si me podías decir que ".c" es el que lo hace mejor :=()

Gracias :P
« Última modificación: 7 Octubre 2014, 14:17 pm por Kaxperday » En línea

Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.
Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Hacer grabación con micrófono en cpp
« Respuesta #8 en: 7 Octubre 2014, 16:50 pm »

BMP es un imagen  :silbar: WAV es un audio.

La solucion de ivancea96 era buena, si te resulta dificil trata de usar mciSendCommand con MCI_RECORD que es mas sencilla pero no mejor.

Ejemplo:
Recording with a Waveform-Audio Device.
« Última modificación: 7 Octubre 2014, 16:51 pm por Eternal Idol » En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Kaxperday


Desconectado Desconectado

Mensajes: 702


The man in the Middle


Ver Perfil WWW
Re: Hacer grabación con micrófono en cpp
« Respuesta #9 en: 8 Octubre 2014, 21:05 pm »

Hola de nuevo siento la demora, gracias por las respuestas sobretodo a eternal idol que me ha pasado justo lo que buscaba, un código simple que haga un archivo de voz, no quiero más xD.

Bueno me he puesto a probarlo y no me compila os paso todo el codigo:

main.cpp:

Código
  1. #include <Windows.h>
  2. using namespace std;
  3.  
  4. DWORD recordWAVEFile(DWORD dwMilliSeconds)
  5. {
  6. UINT wDeviceID;
  7. DWORD dwReturn;
  8. MCI_OPEN_PARMS mciOpenParms;
  9. MCI_RECORD_PARMS mciRecordParms;
  10. MCI_SAVE_PARMS mciSaveParms;
  11. MCI_PLAY_PARMS mciPlayParms;
  12.  
  13. // Open a waveform-audio device with a new file for recording.
  14. mciOpenParms.lpstrDeviceType = (LPCSTR)"waveaudio";
  15. mciOpenParms.lpstrElementName = (LPCSTR)"";
  16. if (dwReturn = mciSendCommand(0, MCI_OPEN,
  17. MCI_OPEN_ELEMENT | MCI_OPEN_TYPE,
  18. (DWORD)(LPVOID)&mciOpenParms))
  19. {
  20. // Failed to open device; don't close it, just return error.
  21. return (dwReturn);
  22. }
  23.  
  24. // The device opened successfully; get the device ID.
  25. wDeviceID = mciOpenParms.wDeviceID;
  26.  
  27. // Begin recording and record for the specified number of
  28. // milliseconds. Wait for recording to complete before continuing.
  29. // Assume the default time format for the waveform-audio device
  30. // (milliseconds).
  31. mciRecordParms.dwTo = dwMilliSeconds;
  32. if (dwReturn = mciSendCommand(wDeviceID, MCI_RECORD,
  33. MCI_TO | MCI_WAIT, (DWORD)(LPVOID)&mciRecordParms))
  34. {
  35. mciSendCommand(wDeviceID, MCI_CLOSE, 0, NULL);
  36. return (dwReturn);
  37. }
  38.  
  39. // Play the recording and query user to save the file.
  40. mciPlayParms.dwFrom = 0L;
  41. if (dwReturn = mciSendCommand(wDeviceID, MCI_PLAY,
  42. MCI_FROM | MCI_WAIT, (DWORD)(LPVOID)&mciPlayParms))
  43. {
  44. mciSendCommand(wDeviceID, MCI_CLOSE, 0, NULL);
  45. return (dwReturn);
  46. }
  47. /*HWND hMainWnd;
  48.  
  49. if (MessageBox(hMainWnd, "Do you want to save this recording?",
  50. (LPCSTR)"", MB_YESNO) == IDNO)
  51. {
  52. mciSendCommand(wDeviceID, MCI_CLOSE, 0, NULL);
  53. return (0L);
  54. }*/
  55.  
  56. // Save the recording to a file named TEMPFILE.WAV. Wait for
  57. // the operation to complete before continuing.
  58. mciSaveParms.lpfilename = "tempfile.wav";
  59. if (dwReturn = mciSendCommand(wDeviceID, MCI_SAVE,
  60. MCI_SAVE_FILE | MCI_WAIT, (DWORD)(LPVOID)&mciSaveParms))
  61. {
  62. mciSendCommand(wDeviceID, MCI_CLOSE, 0, NULL);
  63. return (dwReturn);
  64. }
  65.  
  66. return (0L);
  67. }
  68.  
  69. int main()
  70. {
  71. recordWAVEFile(10000);
  72. return 0;
  73. }
  74.  

Errores:

"Error   1   error LNK2019: símbolo externo __imp__mciSendCommandA@16 sin resolver al que se hace referencia en la función "unsigned long __cdecl recordWAVEFile(unsigned long)" (?recordWAVEFile@@YAKK@Z)"

"Error   2   error LNK1120: 1 externos sin resolver"

Destacar que he modificado el codigo SOLO he puesto como comentario donde creo la ventana HWND y el siguiente if, ya que no me interesa preguntar ni hacer ventanas, y el codigo fuente que encontré aquí: (encontro eternal idol <3)*

http://msdn.microsoft.com/en-us/library/windows/desktop/dd798631%28v=vs.85%29.aspx

No estaba declarada la ventana, probe ha hacer lo poco que se de ventanas y seguía sin funcionar así que lo puse como comentario pero da esos errores, haber si sabéis algo

Muchas gracias y un saludo.
En línea

Cuando el poder económico parasita al político ningún partido ni dictador podrá liberarnos de él. Se reserva el 99% ese poder.
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines