Изменить частоту волн из волнового файла в C # - PullRequest
0 голосов
/ 16 октября 2018

Я пытаюсь конвертировать 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);
            }
        }
    }
...