c# - 音频可视化工具 C#

标签 c# javascript asp.net naudio

我正在用 C#/Asp.net/JavaScript 编写音频可视化工具(作为网站)。由于我的动画应该随着音乐平稳移动,我认为在后面的代码中预处理 MP3、将值/频率写入文本文件或其他文件,然后使用 javascript 读取值并相应地修改动画会更有意义。基本上我想做这样的事情:https://lh4.ggpht.com/Qhm4EeDUgVlvLcX4MiZ1idGDUo5cD5PmLAIZIfnJlilzU789OPXAUK_emJSOT3CK4Vs=h900 我需要某种数值来用作条形的高度,并且它应该随着音乐的继续而改变。 我正在使用 Naudio 来实现此目的。这是我的代码:

using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using NAudio;
using System.IO;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        MP3toWAV(MapPath("~/Music/UctfnI6yUPM.mp3"), MapPath("~/Music/UctfnI6yUPM.wav"));
        Strip(MapPath("~/Music/UctfnI6yUPM.wav"));
    }
    public void MP3toWAV(string file,string output)
    {
        using (NAudio.Wave.Mp3FileReader reader = new NAudio.Wave.Mp3FileReader(file))
        {
            NAudio.Wave.WaveFileWriter.CreateWaveFile(output, reader);
        }
    }
    public void Strip(string path)
    {
        NAudio.Wave.WaveChannel32 wave = new NAudio.Wave.WaveChannel32(new NAudio.Wave.WaveFileReader(path));
        byte[] buffer = new byte[8192];
        int read = 0;
        StreamWriter writer = new StreamWriter(MapPath("~/Result.txt"));
        while (wave.Position < wave.Length)
        {
            read = wave.Read(buffer, 0, 8192);
            for (int i = 0; i < read / 4; i++)
            {
                writer.Write(BitConverter.ToSingle(buffer, i * 4));
            }
        }
    }
}

以下是 Pastebin 上的部分输出:http://pastebin.com/Ve5tym20 我无法复制整个内容,因为它是一个约 90mb 的文本文件。 我不太确定应该如何使用这些数据以及这是否是正确的数据。 过去几天我一直在寻找如何做到这一点。我看过 Mark Heath 关于自动调谐的文章,也看过 BandedSpectrumAnalyzer 项目。我从文章中得到了很多代码,但 BandedSpectrumAnalyzer 项目对我来说有点困惑(我不知道它的哪一部分做了什么) 请帮忙???

最佳答案

由于您想在浏览器中构建 EQ 可视化,我建议使用 WebAudio HTML5 API 而不是服务器端方法。您可以使用 WebAudio api 轻松操作 mp3 和其他文件类型

您可以在线找到许多如何使用 API 的示例。这里列出了一些很好的例子: http://webaudio.github.io/demo-list/

该 API 目前仅在 Chrome、Firefox 和 Safari 中受支持。我相信 IE 很快也会跟进。 http://caniuse.com/#feat=audio-api

这是一个对您的情况有帮助并支持所有浏览器的示例: http://www.smartjava.org/content/exploring-html5-web-audio-visualizing-sound

关于c# - 音频可视化工具 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25949530/

相关文章:

c# - 辅助角色和 Web 角色之间的 Azure 通信

c# - 无法从其字符串表示形式创建类型为 'System.Object' 的对象

c# - 谁是所有字符串中最伟大的?

javascript - 其他页面上的控件事件未被触发并给出错误

c# - 从 C# 应用程序调用本地 .NET (2) COM+ 组件

javascript - "String"对象和 JavaScript 中的字符串文字的区别

javascript - 有没有办法在 C3.js 刻度标签中放置链接?

javascript - 尽管变量有值,函数仍返回未定义

asp.net - 如何在asp.net 4.0中执行异步任务

c# - 标签云字号计算逻辑