9

我已经在 Stackoverflow 和 google 上搜索过,但还没有找到我要找的东西。
到目前为止,我得到了音频原始数据(WAV 文件),我想将其可视化。

        private void Form1_Load(object sender, EventArgs e)
    {
        FileStream fs = new FileStream("D:\\tada.wav", FileMode.Open);
        BinaryReader reader = new BinaryReader(fs);
        char[] data = new char[4];
        long fsize;
        long wfxSize;
        long dataSize;
        WaveFormatEx wfx;

        //RIFF
        reader.Read(data, 0, 4);

        fsize = reader.ReadInt32();

        //WAVE
        reader.Read(data, 0, 4);

        //FMT
        reader.Read(data, 0, 4);
        wfxSize = reader.ReadInt32();

        byte[] wfxBuffer = new byte[wfxSize];
        reader.Read(wfxBuffer, 0, (int)wfxSize);
        wfx = new WaveFormatEx(wfxBuffer);

        //DATA
        reader.Read(data, 0, 4);
        dataSize = reader.ReadInt32();
        byte[] dataBuff = new byte[dataSize];
        reader.Read(dataBuff, 0, (int)dataSize);
        reader.Close();

        //Visualize the data...
    }

我知道我需要将原始数据转换为样本,然后检查每个样本的峰值并绘制线条,但我真的不知道该怎么做(除了绘图)。

4

2 回答 2

13

我看到这是一个老问题,但如果有人对此感兴趣,这是一个解决方案:

使用 NAudio 库: http ://naudio.codeplex.com/

这是一个关于如何使用 NAudio 显示波形的视频教程: http ://www.youtube.com/watch?v=ZnFoVuOVrUQ

于 2013-03-11T16:05:51.197 回答
8

可视化数据... 哇!您应该在此处或此处查看WAV文件规范,然后重新考虑这是否是您真正想要解决的问题。(第二个链接实际上是一个更好、更精简的概述。查看数据部分,看看它是否是您想要使用的东西。)

不要误会我的意思。也许这正是你想要做的,它可能会很有趣。你应该知道你正在进入什么!

此外,这是一个代码项目组件,您可以直接使用或查看想法。

于 2010-08-06T16:50:59.527 回答