如何找到正确的RAW格式

我有这个代码

SNDFILE *sf; SF_INFO info; int num_channels; int num, num_items; int *buf; int f,sr,c; int i,j; FILE *out; /* Open the WAV file. */ info.format = (SF_FORMAT_RAW | SF_FORMAT_PCM_16); info.samplerate = 44100; info.channels = 2; sf = sf_open("test.raw",SFM_READ,&info); if (sf == NULL) { printf("Failed to open the file. ( %d )\n",sf_perror(sf)); exit(-1); } /* Print some of the info, and figure out how much data to read. */ f = info.frames; sr = info.samplerate; c = info.channels; num_items = f*c; /* Allocate space for the data to be read, then read it. */ buf = (int *) malloc(num_items*sizeof(int)); num = sf_read_int(sf,buf,num_items); sf_close(sf); printf("Read %d items\n",num); /* Write the data to filedata.out. */ out = fopen("test.txt","w"); int links; int rechts; for (i = 0; i < num; i += c) { for (j = 0; j < c; ++j) fprintf(out,"%d ",buf[i+j]); fprintf(out,"\n"); } fclose(out); 

它的目的是读取“test.raw”,将其转换为数组并将其写入“test.txt”。 “test.raw”是由。创建的原始pcm

 ... static const pa_sample_spec ss = { .format = PA_SAMPLE_S16LE, .rate = 44100, .channels = 2 }; pa_simple *s = NULL; int ret = 1; int error; s = pa_simple_new(NULL, "rec", PA_STREAM_RECORD, "bluez_source.00_00_00_00_00_00", "rec", &ss, NULL, NULL, &error) ... 

来自pulseaudio录音样本( 下载 )。

事情是,我得到类似的东西

 219676672 -131072 219676672 327680 219611136 655360 219217920 327680 218955776 -131072 219152384 -393216 218693632 -720896 

在test.txt中。 我添加了标题,以获得

 SAMPLES: 365568 BITSPERSAMPLE: 16 CHANNELS: 2 SAMPLERATE: 44100 NORMALIZED: FALSE 219676672 -131072 219676672 327680 219611136 655360 219217920 327680 218955776 -131072 219152384 -393216 218693632 -720896 

并作为ascii文件导入adobe试听。 我使用44100,16位和立体声以及英特尔(也试过摩托罗拉)。

每次我只得到“酒吧”,即恒定音量的时期。 在试听中阅读“test.raw”时,我会看到应该使用intel属性的数据。

我需要调整什么来实现这个目的?