Cómo instalar el complemento de audio en ubuntu
Utilice el siguiente comando:
sudo apt-get install libpulse-dev
Al instalar, se le pedirá que dependa del siguiente software, solo instale juntos:
libavahi-client-dev libavahi-common-dev libpulse-mainloop-glib0 libpulse0
También puede verificar las dependencias del software libpulse-dev en el sitio web oficial. de packages.ubuntu.com, los enlaces relevantes son los siguientes:
tl.hgt
#include lt;simple.hgt; incluir lt; pulse/error.hgt;
#define BUFSIZE 1024
int main(int argc, char*argv[]) {
/* El Formato de muestra a utilizar */
static const pa_sample_spec ss = {
.format = PA_SAMPLE_S16LE,
.rate = 44100,
.canales = 2
};
pa_simple *s = NULL;
int ret = 1;
int error; p>
/* reemplace STDIN con el archivo especificado si es necesario */
if (argc gt; 1) {
int fd;
if ((fd = open(argv[1 ], O_RDONLY)) lt; 0) {
fprintf(stderr, __FILE__": open() falló: s\n", strerror(errno));
ir a finalizar;
}
if (dup2(fd, STDIN_FILENO) lt; 0) {
fprintf(stderr, __FILE__" : dup2() falló: s\n ", strerror(errno));
ir a finalizar;
}
cerrar(fd);
}
/* Crear una nueva secuencia de reproducción */
if (!(s = pa_simple_new(NULL, argv[0], PA_STREAM_PLAYBACK, NULL, "playback" , amp;ss, NULL, NULL, amp; error))) {
fprintf(stderr, __FILE__": pa_simple_new() falló: s\n", pa_strerror(error));
ir a finalizar;
}
for (;;) {
uint8_t buf[BUFSIZE];
ssize_t r;
#if 0
pa_usec_t
latencia;
if ((latencia = pa_simple_get_latency(s, amp; 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)latencia);
#endif
/* Leer algunos datos... */
if ((r = read(STDIN_FILENO, buf, sizeof (buf))) lt; = 0) {
if (r == 0) /* EOF */
break;
fprintf(stderr, __FILE__": lectura() falló: s\n", strerror(errno));
ir a finalizar;
}
/* ... y reprodúcelo */
if (pa_simple_write(s, buf, (size_t) r, amp; error) lt; 0) {
fprintf(stderr, __FILE__": pa_simple_write() error: s\n", pa_strerror(error));
ir a finalizar;
}
}
/* Asegúrate que se reprodujo cada muestra */
if (pa_simple_drain(s, amp; error) lt; 0) {
fprintf(stderr, __FILE__": pa_simple_drain() falló: s \n", pa_strerror(error));
ir a finalizar;
}
ret = 0;
finalizar: p>
p>
si(s)
pa_simple_free(s);
devolver ret;
}
2. Muestra de grabación
Una herramienta de grabación sencilla que utiliza la API sencilla
//parec-simple.c
/***
Este archivo es parte de PulseAudio.
PulseAudio es software gratuito; puede redistribuirlo y/o modificarlo
bajo los términos de la Licencia pública general reducida de GNU tal como se publicó
por la Free Software Foundation; ya sea la versión 2.1 de Lice;
nse,
o (a su elección) cualquier versión posterior.
PulseAudio se distribuye con la esperanza de que sea útil, pero
SIN NINGUNA GARANTÍA; sin siquiera la garantía implícita de
COMERCIABILIDAD o IDONEIDAD PARA UN PROPÓSITO PARTICULAR. Consulte la Licencia Pública General GNU
para obtener más detalles.
Debería haber recibido una. copia de la Licencia pública general reducida de GNU
junto con PulseAudio; de lo contrario, escriba a Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111. -1307
EE.UU..
***/
#ifdef HAVE_CONFIG_H
#include lt;config.hgt;
#endif
#include lt;stdio.hgt;
#include lt;unistd.hgt;
#include lt;string.hgt ;
#include lt;errno.hgt;
#include lt;pulse/simple.hgt;
#include lt;pulse/error.hgt;
#define BUFSIZE 1024
/* Una rutina simple que llama a UNIX write() en un bucle */
static ssize_t loop_write(int fd, const void* datos, size_t tamaño) {
ssize_t ret = 0;
mientras (tamaño gt; 0) {
ssize_t r;
if ((r = escribir(fd, datos, tamaño)) lt; 0)
return r;
if (r == 0)
romper ;
ret = r;
datos = (const uint8_t*) datos r;
tamaño -= (size_t) r;
}
return ret;
}
int main(int argc, char*argv[]) {
/* El tipo de muestra a utilizar */
static const pa_sample_spec ss = {
.format = PA_SAMPLE_S16LE,
.rate =
44100,
.canales = 2
};
pa_simple *s = NULL
int ret = 1; >
int error;
/* Crear el flujo de grabación */
if (!(s = pa_simple_new(NULL, argv[0], PA_STREAM_RECORD, NULL, "record ", & ss, NULL, NULL y error))) {
fprintf(stderr, __FILE__": pa_simple_new() falló: s\n", pa_strerror(error));
ir a finalizar;
}
for (;;) {
uint8_t buf[BUFSIZE];
/* Grabar algunos datos ... */
if (pa_simple_read(s, buf, sizeof(buf), amp; error) lt; 0) {
fprintf(stderr, __FILE__" : pa_simple_read () falló: s\n", pa_strerror(error));
ir a finalizar;
}
/* Y escribirlo en STDOUT * /
if (loop_write(STDOUT_FILENO, buf, sizeof(buf)) != sizeof(buf)) {
fprintf(stderr, __FILE__": escritura() falló: s\ n" , strerror(errno));
ir a finalizar;
}
}
ret = 0;
terminar:
if(s)
pa_simple_free(s);
devolver ret;
}
3. Al compilar la biblioteca pulseaudio, debe agregar la biblioteca de enlaces dinámicos libpulse, etc.
(Puede encontrar la dinámica de pulse en /usr/lib/i386-linux-gnu/ directorio Biblioteca
/usr/lib/i386-linux-gnu/libpulsecommon-1.1.so
/usr/lib/i386-linux-gnu/libpulsedsp.so
/usr/lib/i386-linux-gnu/libpulse-mainloop-glib.so
/usr/lib/i386-linux-gnu/libpulse-mainloop-glib.so.0 p >
/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-sim
ple.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
El nombre completo de ALSA es: Advanced Linux Sound Architecture
La dirección del sitio web es: http://www.alsa-project.org/main/index.php/Main_Page