【发布时间】:2021-10-08 13:44:33
【问题描述】:
这与here 的问题非常相似,但我似乎无法应用该解决方案。
我有一个对正弦波进行采样并将其写入 pcm 文件的代码。用ffplay听的时候,有一些不知道从哪里来的静电噪音。基于上述帖子中的解决方案,我使用二进制文件进行写入,并确保我以带符号的 8 位格式播放文件。
这是我使用的代码:
int createSineWavePCM(int freq, int sample_rate) {
char out_name[100];
sprintf(out_name, "../sine_freq%d_sr%d.pcm", freq, sample_rate);
ofstream outfile(out_name, ios::binary);
char data[1000000];
for (int j = 0 ; j < 1000000 ; ++j) {
double ll = 50.0L * sin((2.0L * M_PIl * j * freq / sample_rate));
data[j] = ll;
}
outfile.write(data, sizeof data);
outfile.close();
cout << "Stored sine wave pcm file in " << out_name << endl;
return 0;
}
我使用 freq = 440 和 sample_rate = 44100,然后我玩:
ffplay {pcm_file} -f s8 -sample_rate 44100
关于什么可能导致静电噪音的任何想法?
【问题讨论】:
-
我以前回答过这个问题。这可能是相关的:stackoverflow.com/questions/10844122/…
-
另一件事要检查。将数据声明为
signed char而不是char。根据编译器和编译器标志,char是有符号还是无符号有时会模棱两可。