- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试根据以下答案从WAV文件绘制波形:
https://stackoverflow.com/a/1215472/356635
不幸的是,每次都会产生一个大的黑色方块。我正在努力找出原因,有人可以发现问题吗? normalisedData
中的所有值都在-1 and +1
之间。 test.wav
文件是Windows wav文件,播放5秒的警报声音。
这是我的代码:
using System;
using System.Drawing;
using System.IO;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
const string rootDir = "C:\\inetpub\\wwwroot\\";
if (File.Exists(rootDir + "test.png"))
{
File.Delete(rootDir + "test.png");
}
var stream = new MemoryStream(File.ReadAllBytes(rootDir + "test.wav"));
var data = stream.ToArray();
stream.Dispose();
var normalisedData = FloatArrayFromByteArray(data);
// Get max value in data
var maxValue = 0f;
for (var i = 0; i < normalisedData.Length; i++)
{
if (normalisedData[i] > maxValue) maxValue = normalisedData[i];
}
// Normalise data
for (var i = 0; i < normalisedData.Length; i++)
{
normalisedData[i] = (data[i] / maxValue) * 100f;
}
// Save picture
var picture = DrawNormalizedAudio(normalisedData, Color.LimeGreen);
picture.Save(rootDir + "test.png", System.Drawing.Imaging.ImageFormat.Png);
picture.Dispose();
}
public static Bitmap DrawNormalizedAudio(float[] data, Color color)
{
Bitmap bmp;
bmp = new Bitmap(500,500);
int BORDER_WIDTH = 5;
int width = bmp.Width - (2 * BORDER_WIDTH);
int height = bmp.Height - (2 * BORDER_WIDTH);
using (Graphics g = Graphics.FromImage(bmp))
{
g.Clear(Color.Black);
Pen pen = new Pen(color);
int size = data.Length;
for (int iPixel = 0; iPixel < width; iPixel++)
{
// determine start and end points within WAV
int start = (int)((float)iPixel * ((float)size / (float)width));
int end = (int)((float)(iPixel + 1) * ((float)size / (float)width));
float min = float.MaxValue;
float max = float.MinValue;
for (int i = start; i < end; i++)
{
float val = data[i];
min = val < min ? val : min;
max = val > max ? val : max;
}
int yMax = BORDER_WIDTH + height - (int)((max + 1) * .5 * height);
int yMin = BORDER_WIDTH + height - (int)((min + 1) * .5 * height);
g.DrawLine(pen, iPixel + BORDER_WIDTH, yMax,
iPixel + BORDER_WIDTH, yMin);
}
}
return bmp;
}
public float[] FloatArrayFromByteArray(byte[] input)
{
float[] output = new float[input.Length / 4];
System.Buffer.BlockCopy(input, 0, output, 0, input.Length);
return output;
}
}
最佳答案
WAV文件的格式比您的代码所假定的更为复杂。它们具有标题和其他描述音频的元数据。音频数据通常存储为带符号的16位或8位整数值,尽管其他格式也是可能的。您可能需要找到一个将WAV文件解码为可以在应用程序中使用的浮点值的库,或者需要使用实用程序将WAV文件转换为原始浮点格式的文件。
您的规范化代码也不正确。由于样本值可能为负,因此您需要找到样本绝对值的最大值。您不应该乘以100,因为这会将它们规范化为-100,100。
关于c# - 尝试绘制波形但不绘制任何数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24722951/
我正在尝试实现一系列音频文件,这些文件是三星语音记录功能的一部分。 像这样 enter image description here 但是,没有显示实时频谱的信息,但是没有显示上传的音频文件的波形的信
希望从输入中获取特定金色#ad9557(173/255、149/255、87/255)的波形,并具有透明背景/或黑色(如果不可能)。 我目前正在使用此脚本来生成它: command = new Str
这个问题是关于用于回答 this 的代码的线。我使用的是 Nicholas DiPiazza 发布的代码,后来是 Andrew Thompson 的变体。我在这段代码中添加了第二个 AudioWave
这就是我要达到的结果 这是我所做的:https://codepen.io/demedos/pen/gjQNOM HTML 结构: .container .header .page-1
我想在未来用 C# .NET 4.0 中的音频做一些项目,所以我收集了一些用于录音、处理 WAVE 文件等的代码示例。但我没能找到的是: 如何实时(ish)绘制音频波形/频谱图?显然,创建内存位图并将
我已经搜索了很多东西,但是找不到我想要的东西。 有没有办法从一个非常短的音频文件(在我的情况下为1秒mp3)生成简化或平坦的声波图像? 简化可能是错误的术语,但是我的意思是我想要这种输出: 而不是这样
我在使用 MS-s 波形 API 的程序中遇到某种链接错误。我正在使用的代码可以在这里找到:http://www.planet-source-code.com/vb/scripts/ShowCode.
我正在使用 Android 2.3.1 上的 Visualizer 类进行一些音乐分析。我发现 FFT 和波形幅度受设备体积的影响。这意味着,如果用户调低音量,我会收到很少或收不到 FFT 数据。 我
我有两张 png,一张白色,一张红色。 当歌曲不播放时,它应该是白色的,当歌曲播放时,它应该随着歌曲的进行而填充红色,并且当分别向后和向前滑动时,它应该填充红色。 我已经能
像soundcloud和zippyshare1,如何用java生成音频波形图?是否有任何框架或开源库可用于这种情况? 我想生成一个音频波形作为图像,加载轨道后,将加载波形图像。 最佳答案 以 this
是否有一种仅 Java 的方法可以在 JScrollPane 中显示更大的图片?我不想重新发明轮子,而且我已经在 JLabel 技巧中使用 ImageIcon 来显示 32768x400 图像而苦
是否有(某处)用于 Windows 的命令行程序,可以从 MP3/WAV 创建 PNG/JPEG 视觉效果? 编辑: 这是图像应该是什么样子的一个很好的例子。 最佳答案 Sox ,“音频处理的瑞士军刀
我正在开发一个 WebGL 应用程序,它使用来自 soundcloud API 的数据。 我正在尝试使用 ThreeJS 将轨道图稿和波形 PNG 加载到纹理中以放入 Sprite 上。 但是我在 c
我是一名优秀的程序员,十分优秀!