1
我有rawData1中的所有數據aray它是短陣列。 我已經將它轉換爲字節aray。然後我創建了wav文件頭,然後將該頭和字節數組數據寫入文件中。但是我收到錯誤「Windows媒體播放器在播放文件時出現問題」。可以任何機構幫助我嗎?如何將PCM數據轉換爲wav文件?
public void save file
{
byte[] byte_array = new byte[rawData1.Length * 2];
for (int i = 0; i < rawData1.Length; ++i)
{
//byte_array[2 * i] = getByte1(rawData1[i]);
//byte_array[2 * i + 1] = getByte2(rawData1[i]);
byte_array[2 * i] = getByte2(rawData1[i]);
byte_array[2 * i + 1] = getByte1(rawData1[i]);
}
uint numsamples = 44100;
ushort numchannels = 2;
ushort samplelength = 1; // in bytes
uint samplerate = 22050;
StorageFolder storageFolder = KnownFolders.MusicLibrary;
StorageFile file = await storageFolder.CreateFileAsync("sample.wav", CreationCollisionOption.GenerateUniqueName);
Stream stream = await file.OpenStreamForWriteAsync();
BinaryWriter wr = new BinaryWriter(stream);
wr.Write("RIFF".ToCharArray());
wr.Write(36 + numsamples * numchannels * samplelength);
wr.Write("WAVEfmt".ToCharArray());
wr.Write(16);
wr.Write((ushort)1);
wr.Write(numchannels);
wr.Write(samplerate);
wr.Write(samplerate * samplelength * numchannels);
wr.Write(samplelength * numchannels);
wr.Write((ushort)(8 * samplelength));
wr.Write("data".ToCharArray());
wr.Write(numsamples * samplelength);
wr.Write(byte_array);
wr.Dispose();
stream.Dispose();
}
public static byte getByte1(short s)
{
return (byte)s;
}
public static byte getByte2(short s)
{
int temp= s >> 8;
return (byte)temp;
}
有人能幫助我嗎?