Cómo instalar complementos de audio en ubuntu
sudo apt-get install libpulse-dev
Al realizar la instalación, el sistema le preguntará si depende del siguiente software, para que puedan instalarlo juntos:
libavahi-client-dev libavahi-common-dev libpulse-mainloop-glib0 libpulse0
También puedes ver las dependencias del software libpulse-dev en el sitio web oficial de packages.ubuntu.com Los enlaces relevantes son los siguientes:
tl.h>
#include < ;pulse/simple.h>
#include .channels = 2 }; pa_simple *s = NULL; int ret = 1; int error ; /* Reemplace STDIN con el archivo especificado si es necesario */ if (argc > 1) { int fd; if ((fd = open(argv[1], O_RDONLY)) < 0) { fprintf(stderr, __FILE__": open() falló: % s\n", strerror(errno) ); ir a finalizar; } if (dup2(fd, STDIN_FILENO) < 0) { fprintf(stderr, __FILE__": dup2 () falló: %s\n", strerror(errno)); ir a finalizar; } close(fd); } /* Crear una nueva secuencia de reproducción*/ if (!(s = pa_simple_new(NULL, argv[0] , PA_STREAM_PLAYBACK, NULL, "reproducción", &ss, NULL, NULL, &error))){ fprintf(stderr, __FILE__".pa_simple_new() falló: %s\n", pa_strerror(error)) ; ir a finalizar; } para (;;) { uint8_t buf[BUFSIZE]; size_t r; #if 0 pa_usec_t latencia; if ((latencia = pa_simple_get_latency(s, &error)) == (pa_usec_t) - 1) { fprintf(stderr, __FILE__":pa_simple_get_latency() falló: %s\n", pa_strerror(error)); ir a finalizar; } fprintf(stderr, "%0.0f usec \r", ( float)latency); #endif /* Leer algunos datos. ..*/ if ((r = leer(STDIN_FILENO, buf, sizeof(buf))) <= 0) { if (r == 0) /* EOF */ break; fprintf( stderr, __FILE__": lectura() fallida: %s\n", strerror(errno)); ir a finalizar; } } p> /* .play*/ if (pa_simple_write(s, buf, (size_t) r, &error) < 0) { fprintf(stderr, __FILE__" : pa_simple_write() falló: %s\", pa_strerror(n", pa_simple_write()) falló.n", pa_strerror(error)); ir a finalizar; } } /* Asegúrate de que se reproduzcan todas las muestras*/ if (pa_simple_ Drain(s, &error) < 0) { fprintf(stderr, __FILE__":pa_simple_drain() falló: %s\n", pa_strerror(error)); ir a finalizar } ret = 0; finalizar: si (s) pa_simple_free(s); devolver ret; } 2. Ejemplo de grabación Herramienta de grabación simple usando API simple //parec-simple.c / *** Este archivo es parte de PulseAudio. PulseAudio es un software gratuito y puedes redistribuirlo/y/o/o. PulseAudio es software gratuito; usted puede redistribuirlo y/o modificarlo bajo los términos de la Licencia Pública General Reducida GNU publicada por el Software Libre. Base . PulseAudio se distribuye con la esperanza de que sea útil, pero sin ninguna garantía, ni siquiera la garantía implícita de comerciabilidad o idoneidad para un particular; objetivo. . Ver GNU Licencia pública general. Para más información, consulte la Licencia Pública General GNU . Debería haber recibido una copia de la Licencia pública general reducida de GNU con PulseAudio Si no, escriba a Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 Estados Unidos. ***/ #ifdef HAVE_CONFIG_H #include #endif #include #include #include #include #include #include #define BUFSIZE 1024 /* Una rutina simple que llama a UNIX write() en un bucle*/ static ssize_t loop_write(int fd, const void*data, size_t tamaño) { ssize_t ret = 0; mientras (tamaño > 0) { ssize_t r; > if ((r = escribir(fd, datos, tamaño)) < 0) return r; if (r == 0) romper; ret += r; datos = (const uint8_t*) datos + r; tamaño -= (size_t ) r; } return ret; } Este es mi primer intento de escribir en un archivo de datos. p> int main(int argc, char*argv[]) { /* El tipo de muestreo que se utilizará*/ static const pa_sample_spec ss = { .formato = PA_SAMPLE_S16LE, .rate = 44100, .canales = 2 }; pa_simple *s = NULL int ret = 1; int error; /* Crear secuencia de registros*/ if (! (s = pa_simple_new(NULL, argv[0], PA_STREAM_RECORD, NULL, "record", &ss, NULL, NULL, &error))){ fprintf(stderr, __FILE__ ": pa_ simple_new() falló: %s\n", pa_strerror(error)); ir a finalizar; } for (;;) {< / p> uint8_t buf[BUFSIZE]; /* Registra algunos datos...*/ if (pa_simple_read(s, buf, sizeof(buf), &error ) < 0) { fprintf(stderr, __FILE__": pa_simple_read() falló: %s\n", pa_ strerror(error)); ir a finalizar; } /* y escríbalo en STDOUT */ if (loop_write(STDOUT_FILENO, buf, sizeof(buf)) != sizeof(buf)) { fprintf(stderr, __FILE__": escritura() falló: %s\n", strerror(errno)); ir a finalizar; } p> } ret = 0;; finalizar finalizar: si (s) pa_simple_free(s); return ret; } 3. Al compilar una biblioteca que contiene pulseaudio, debe agregar la biblioteca de enlaces dinámicos. de pulseaudio - libpulse et al. (Puede encontrar la biblioteca de enlaces dinámicos de pulso en el directorio /usr/lib/i386-linux-gnu/ /usr/lib/i386-linux-gnu/libpulsecommon- 1.1 .so /usr/lib/i386-linux-gnu/libpulsecommon-1.1.so /usr/lib/i386-linux-gnu/ directorio /usr/lib/lib/i386-linux-gnu i386-linux-gnu/libpulsedsp.so /usr/lib/i386-linux-gnu/libpulse-mainloop-glib.so p > /usr/lib/i386-linux-gnu/libpulse-mainloop-glib.so.0 /usr/lib/i386-linux-gnu/libpulse-mainloop-glib.so 0.0.4 /usr/lib/i386-linux-gnu/libpulse-simple.so /usr/lib/i386-linux-gnu/libpulse. - simple.so.0 /usr/lib/i386-linux-gnu/libpulse-simple.so.0.0.3 /usr/lib/i386-linux-gnu / libpulse.so /usr/lib/i386-linux-gnu/libpulse.so.0 /usr/lib/i386-linux-gnu/libpulse.so.0.13 5) Por ejemplo: gcc -o pacat-simple pacat-simple.c -lpulse -lpulsecommon-1.1 -lpulse-simple 3. Biblioteca de audio ALSA<. /p > El nombre completo de ALSA: Arquitectura sonora avanzada de Linux La URL es: http://www.alsa-project.org/main/index.php/Main_Page