问题描述
mp3File = new Mp3FileReader("someMP3Files.mp3");
WaveChannel32 inputStream = new WaveChannel32(mp3File);
streamProcessor = new WaveStreamProcessor(inputStream);
CreateWaveFile("test.wav",inputStream);
所以基本上它需要 mp3 并将其转换为名为 test.txt 的波形文件。查看转换后的文件,我看到了这个使用大胆。
注意突出显示的区域为什么它会给出空白区域并且没有完全复制?
有什么想法吗?
我的创建波浪方法:
public static void CreateWaveFile(string filename,WaveStream stream)
{
using (WaveFileWriter writer = new WaveFileWriter(filename,stream.WaveFormat))
{
byte[] buffer = new byte[stream.Length];
while (true)
{
int bytesRead = stream.Read(buffer,buffer.Length);
if (bytesRead == 0)
break;
writer.WriteData(buffer,bytesRead);
}
}
}
澄清一下,填充实际上是在创建 Mp3FileReader 时添加的。
解决方法
MemoryStream mp3Buffered = new MemoryStream();
using (var responseStream = resp.GetResponseStream())
{
byte[] buffer = new byte[65536];
int bytesRead = responseStream.Read(buffer,buffer.Length);
while (bytesRead > 0)
{
mp3Buffered.Write(buffer,bytesRead);
bytesRead = responseStream.Read(buffer,buffer.Length);
}
}
mp3Buffered.Position = 0;
using (var mp3Stream = new Mp3FileReader(mp3Buffered))
{
WaveFileWriter.CreateWaveFile("file.wav",mp3Stream);
}
我不太确定你说的那个问题是什么意思,但是我尽了最大努力并进行了研究,所以这就是我发现的。而且我还认为在转换这些文件时会自动添加填充。
注意:如果我的评论有误,请不要抨击我,稍后查看我的个人资料,您就会明白为什么。 :)