6

mp3 データをバイト配列で取り込むプログラムがあります。その mp3 データを wav 形式に変換し、バイト データに格納する必要があります。この目的で NAudio を使用しようとしています。この目的のために次のコードを使用しています。

Stream inputStream = ...;
Stream outputStream = ...;

using (WaveStream waveStream = WaveFormatConversionStream.CreatePcmStream(new Mp3FileReader(inputStream)))
using (WaveFileWriter waveFileWriter = new WaveFileWriter(outputStream, waveStream.WaveFormat))
{
    byte[] bytes = new byte[waveStream.Length];
    waveStream.Read(bytes, 0, waveStream.Length);
    waveFileWriter.WriteData(bytes, 0, bytes.Length);
    waveFileWriter.Flush();
}

上記のコードを実行すると、バイト配列に 0 しか返されません。ただし、WaveFileWriter を使用してデータをファイルに直接書き込むと、ファイルは正しいデータを受け取ります。理由はありますか?

4

2 に答える 2

6

これを試してください:

using (WaveStream waveStream = WaveFormatConversionStream.CreatePcmStream(new Mp3FileReader(inputStream))) 
using (WaveFileWriter waveFileWriter = new WaveFileWriter(outputStream, waveStream.WaveFormat)) 
{ 
    byte[] bytes = new byte[waveStream.Length]; 
    waveStream.Position = 0;
    waveStream.Read(bytes, 0, waveStream.Length); 
    waveFileWriter.WriteData(bytes, 0, bytes.Length); 
    waveFileWriter.Flush(); 
} 
于 2012-07-16T09:45:07.520 に答える