1
A
回答
0
这将使用n音讯生成的音频文件波形...
using NAudio.Wave;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class test : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string strPath = Server.MapPath("audio/060.mp3");
string SongID = "2";
byte[] bytes = File.ReadAllBytes(strPath);
WriteToFile(SongID,strPath, bytes);
Response.Redirect("Main.aspx");
}
private void WriteToFile(string SongID, string strPath, byte[] Buffer)
{
try
{
int samplesPerPixel = 128;
long startPosition = 0;
//FileStream newFile = new FileStream(GeneralUtils.Get_SongFilePath() + "/" + strPath, FileMode.Create);
float[] data = FloatArrayFromByteArray(Buffer);
Bitmap bmp = new Bitmap(1170, 200);
int BORDER_WIDTH = 5;
int width = bmp.Width - (2 * BORDER_WIDTH);
int height = bmp.Height - (2 * BORDER_WIDTH);
NAudio.Wave.Mp3FileReader reader = new NAudio.Wave.Mp3FileReader(strPath, wf => new NAudio.FileFormats.Mp3.DmoMp3FrameDecompressor(wf));
NAudio.Wave.WaveChannel32 channelStream = new NAudio.Wave.WaveChannel32(reader);
int bytesPerSample = (reader.WaveFormat.BitsPerSample/8) * channelStream.WaveFormat.Channels;
using (Graphics g = Graphics.FromImage(bmp))
{
g.Clear(Color.White);
Pen pen1 = new Pen(Color.Gray);
int size = data.Length;
string hexValue1 = "#009adf";
Color colour1 = System.Drawing.ColorTranslator.FromHtml(hexValue1);
pen1.Color = colour1;
Stream wavestream = new NAudio.Wave.Mp3FileReader(strPath, wf => new NAudio.FileFormats.Mp3.DmoMp3FrameDecompressor(wf));
wavestream.Position = 0;
int bytesRead1;
byte[] waveData1 = new byte[samplesPerPixel * bytesPerSample];
wavestream.Position = startPosition + (width * bytesPerSample * samplesPerPixel);
for (float x = 0; x < width; x++)
{
short low = 0;
short high = 0;
bytesRead1 = wavestream.Read(waveData1, 0, samplesPerPixel * bytesPerSample);
if (bytesRead1 == 0)
break;
for (int n = 0; n < bytesRead1; n += 2)
{
short sample = BitConverter.ToInt16(waveData1, n);
if (sample < low) low = sample;
if (sample > high) high = sample;
}
float lowPercent = ((((float)low) - short.MinValue)/ushort.MaxValue);
float highPercent = ((((float)high) - short.MinValue)/ushort.MaxValue);
float lowValue = height * lowPercent;
float highValue = height * highPercent;
g.DrawLine(pen1, x, lowValue, x, highValue);
}
}
string filename = Server.MapPath("image/060.png");
bmp.Save(filename);
bmp.Dispose();
}
catch (Exception e)
{
}
}
public float[] FloatArrayFromStream(System.IO.MemoryStream stream)
{
return FloatArrayFromByteArray(stream.GetBuffer());
}
public float[] FloatArrayFromByteArray(byte[] input)
{
float[] output = new float[input.Length/4];
for (int i = 0; i < output.Length; i++)
{
output[i] = BitConverter.ToSingle(input, i * 4);
}
return output;
}
}
相关问题
- 1. 使用C#显示音频波形
- 2. 创建三角形音频波形
- 3. 从音频文件中创建平坦的声波(波形)图像
- 4. 在android中创建音频文件的波形
- 5. 比较两个音频文件波形
- 6. 如何在Flash中创建音乐播放器来创建音频文件的波形?
- 7. 有没有可以从音频文件(mp3)中创建波形图像的库?
- 8. 从matlab录制的波形音频文件的声音不同
- 9. 如何使用VBA播放波形文件或声音文件
- 10. 如何获取mp3或音频文件的波形?
- 11. 如何使用J2me midp2.0在手机中播放音频文件?
- 12. 生成音频波形
- 13. OpenGL音频波形渲染
- 14. 音频波形可视化
- 15. 从音频文件生成波形图像
- 16. 使用J2ME播放音频
- 17. iOS:创建简单的音频波形动画
- 18. 在Android中显示上次创建的音频文件
- 19. 从.java文件创建.class文件 - J2ME
- 20. 如何使用ffmpeg创建流式音频文件?
- 21. 如何从媒体播放器创建音频文件
- 22. 如何从音频创建HTML5中的音频播放器?
- 23. 如何使用多个视频文件创建视频文件?
- 24. 如何使用J2ME分析音乐文件(mp3)以便在移动设备上显示其频谱 - Java ME
- 25. 从视频的音频流生成波形图像
- 26. 从图像和音频创建视频文件(预先录制)
- 27. 绘制音频波形图Java
- 28. 音频波形与.raw输入
- 29. Swing中的音频波形选择
- 30. 显示和播放音频文件