以下是一个能够自动生成1kHz音频PCM数据流的C语言代码示例:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define SAMPLE_RATE 44100
#define AMPLITUDE 32767
#define FREQUENCY 1000.0
int main() {
unsigned int numSamples = SAMPLE_RATE; // 持续1秒钟的样本数
short int *pcmData = (short int *)malloc(numSamples * sizeof(short int));
if (pcmData == NULL) {
printf("内存分配失败!\n");
return 1;
}
double phaseIncrement = 2.0 * M_PI * FREQUENCY / SAMPLE_RATE;
double phase = 0.0;
// 生成1kHz音频PCM数据
for (unsigned int i = 0; i < numSamples; i++) {
pcmData[i] = AMPLITUDE * sin(phase);
phase += phaseIncrement;
}
// 将PCM数据流写入文件
FILE *file = fopen("audio.pcm", "wb");
if (file != NULL) {
fwrite(pcmData, sizeof(short int), numSamples, file);
fclose(file);
printf("PCM数据流已生成并保存在 audio.pcm 文件中。\n");
} else {
printf("无法打开文件进行写入!\n");
}
free(pcmData);
return 0;

本文介绍了一个C语言代码示例,用于生成1kHz的音频PCM数据流,通过计算相位并应用正弦函数,最终将数据写入audio.pcm文件。
最低0.47元/天 解锁文章
1277

被折叠的 条评论
为什么被折叠?



