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. 读取音频文件并用Java显示波形。
- 4. 从音频文件中创建平坦的声波(波形)图像
- 5. WPF库显示音频波形
- 6. 如何用自定义频率音/波创建.wav文件?
- 7. 在android中创建音频文件的波形
- 8. 比较两个音频文件波形
- 9. 如何在Flash中创建音乐播放器来创建音频文件的波形?
- 10. 有没有可以从音频文件(mp3)中创建波形图像的库?
- 11. 从YouTube视频生成音频波形
- 12. 从matlab录制的波形音频文件的声音不同
- 13. 从PCM文件或FFT显示波形
- 14. 从字符串创建波形文件
- 15. 如何在Android上创建音频示波器
- 16. 如何使用VBA播放波形文件或声音文件
- 17. 如何绘制音频波形?
- 18. 如何使用J2me midp2.0在手机中播放音频文件?
- 19. 如何获取mp3或音频文件的波形?
- 20. 使用as3创建正弦波音频 - 扫描上下频率
- 21. 使用J2ME播放音频
- 22. 音频波形可视化
- 23. 生成音频波形
- 24. OpenGL音频波形渲染
- 25. 音频波形匹配
- 26. 从音频文件生成波形图像
- 27. 在MATLAB中删除波形音频文件中的噪音
- 28. 创建音频波形可擦洗时间线。 Swift 3 MacOS
- 29. iOS:创建简单的音频波形动画
- 30. 如何使用处理反转音频波形