C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 从音频中绘制波形的算法大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试从原始音频文件中绘制波形.我使用FFmpeg对音频文件进行了解复用/解码,我有以下信息:样本缓冲区,样本缓冲区的大小,音频文件的持续时间(以秒为单位),采样率(44100,48000等),样本大小,样本format(uint8,int16,int32,float,double)和原始音频数据本身.

在互联网上挖掘我发现这个算法(更多here):

白噪声:

算法

Random rnd = new Random();
short randomValue = 0;

for (int i = 0; i < numSamples; i++)
{
    randomValue = Convert.ToInt16(rnd.Next(-amplitude,amplitude));
    data.shortArray[i] = randomValue;
}

这真的很好,但我不想这样画,但这样:

是否有任何算法或想法如何使用我所拥有的信息绘制?

解决方法

首先,您需要确定每个样本最终会在屏幕上的哪个位置.
int x = x0 + sample_number * (xn - x0) / number_of_samples;

现在,对于具有相同x的所有样本,分别确定正值和负值的最小值和最大值.绘制一条垂直线,一条从负最大值到正最大值的暗线,然后是从负顶部到正面最小值的一条亮线.

编辑:考虑一下这个,你可能想要使用平均而不是内线的min.

大佬总结

以上是大佬教程为你收集整理的c – 从音频中绘制波形的算法全部内容,希望文章能够帮你解决c – 从音频中绘制波形的算法所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: