1

simple.hpulseaudioヘッダーファイルを使用してラップトップのマイクから自分の声を配列に録音しようとしていますが、それを理解できないようです。録音して録音を再生するたびに、それは高音のビープ音で、例に従いましたが、これを理解できないようです。誰か助けてください。私は基本的に、doxygenページにある例「parec-simple.c」をハッキングしています。の出力を にルーティングしてbufからstdout、 libre-office calc を使用してグラフをプロットし、出力がサウンドのように見えるかどうかを確認しましたが、そうではありません。

ここに私が使用したコードがあります

#ifdef HAVE_CONFIG_H
#include <config.h>
#endif

#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>

#include <pulse/simple.h>
#include <pulse/error.h>

#define BUFSIZE 1024

FILE *output; 

/* A simple routine calling UNIX write() in a loop */
void loop_write(uint8_t *data) {
  register int size = 1023;

while (size > 0) 
{
    fprintf(output,"%"SCNu8"\n",data[size]  )  ;    
        size --;
    }

}

int main(int argc, char*argv[]) {
output = fopen("/home/donnell/output", "w");

/* The sample type to use */
static const pa_sample_spec ss = {
    .format = PA_SAMPLE_S16LE,
    .rate = 41000,
    .channels = 2
};
pa_simple *s = NULL;
int ret = 1;
int error;

/* Create the recording stream */
if (!(s = pa_simple_new(NULL, argv[0], PA_STREAM_RECORD, NULL,  "record", &ss, NULL, NULL, &error))) {
    fprintf(stderr, __FILE__": pa_simple_new() failed: %s\n",   pa_strerror(error));
    goto finish;
}

for (;;) {
    uint8_t buf[BUFSIZE];

    /* Record some data ... */
    if (pa_simple_read(s, buf, sizeof(buf), &error) < 0) {
        fprintf(stderr, __FILE__": pa_simple_read() failed: %s\n",  pa_strerror(error));
        goto finish;
    }

   /* and write it to fle*/
loop_write(buf);

}

ret = 0;

finish:

if (s)
    pa_simple_free(s);

return ret;
}
4

0 に答える 0