Я пытаюсь конвертировать Mp3-файл в Wave, но мне нужна конкретная частота: 8000 48000 ... Я знаю, как конвертировать файл в Wave, но я действительно не знаю, как изменить частоту,я попытался взять двоичный код и изменить simpleRate, но он не работает, потому что это неизменный сброс.Есть ли способ изменить неизменный флеш?
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog open = new OpenFileDialog();
open.Filter = "MP3 File (*.mp3)|*.mp3;";
if (open.ShowDialog() != DialogResult.OK) return;
SaveFileDialog save = new SaveFileDialog();
save.Filter = "WAV File (*.wav)|*.wav;";
if (save.ShowDialog() != DialogResult.OK) return;
using (Mp3FileReader mp3 = new Mp3FileReader(open.FileName))
{
using (WaveStream pcm = WaveFormatConversionStream.CreatePcmStream(mp3))
{
BinaryReader reader = new BinaryReader(pcm);
int chunkID = reader.ReadInt32();
int fileSize = reader.ReadInt32();
int riffType = reader.ReadInt32();
int fmtID = reader.ReadInt32();
int fmtSize = reader.ReadInt32();
int fmtCode = reader.ReadInt16();
int channels = reader.ReadInt16();
int sampleRate = reader.ReadInt32();
int fmtAvgBPS = reader.ReadInt32();
int fmtBlockAlign = reader.ReadInt16();
int bitDepth = reader.ReadInt16();
reader.Close();
sampleRate = 8000;
using (BinaryWriter writer = new BinaryWriter(pcm))
{
writer.Write(chunkID);
writer.Write(fileSize);
writer.Write(riffType);
writer.Write(fmtID);
writer.Write(fmtSize);
writer.Write(fmtCode);
writer.Write(channels);
writer.Write(sampleRate);
writer.Write(fmtAvgBPS);
writer.Write(fmtBlockAlign);
writer.Write(bitDepth);
}
WaveFileWriter.CreateWaveFile(save.FileName, pcm);
}
}
}