Установите громкость в mp3 поток с помощью NAudio

Здесь, в этом коде, я использую NAudio и Lame для преобразования wav-файла в mp3-поток, и я получаю вывод mp3-потока без каких-либо проблем. Но помимо этого я также хочу установить громкость в финальном потоке mp3. Любая помощь с благодарностью.

 public byte[] ConvertWavToMP3(byte[] bt, uint bitrate)
 {         

     MemoryStream ms = new MemoryStream(bt);
     ms.Seek(0, SeekOrigin.Begin);
     var ws = new WaveFileReader(ms);

     byte[] wavdata = null;
     using (MemoryStream wavstrm = new MemoryStream())
     using (WaveFileWriter wavwri = new WaveFileWriter(wavstrm, ws.WaveFormat))
     {
        ws.CopyTo(wavwri);
        wavdata = wavstrm.ToArray();
     }

     WaveLib.WaveFormat fmt = new WaveLib.WaveFormat(ws.WaveFormat.SampleRate, ws.WaveFormat.BitsPerSample, ws.WaveFormat.Channels);

     Yeti.Lame.BE_CONFIG beconf = new Yeti.Lame.BE_CONFIG(fmt, bitrate);

     using (MemoryStream mp3strm = new MemoryStream())
     using (Mp3Writer mp3wri = new Mp3Writer(mp3strm, fmt, beconf))
     {               

        mp3wri.Write(wavdata, 0, wavdata.Length);
        byte[] mp3data = mp3strm.ToArray();
        return mp3data;
     }

    }

1 ответ

Решение

Ты можешь использовать AudioFileReader который даст вам свойство Volume, которое вы можете настроить (1.0 - это полная шкала). Это также превратит аудио в ISampleProvider с образцами поплавка IEEE, но я думаю, что LAME принимает поплавок IEEE, в противном случае используйте SampleToWaveProvider16 вернуться к 16-битным целочисленным выборкам.

Другие вопросы по тегам