Мне нужно преобразовать звуковой файл spx (в формате ogg) в mp3-файл. Я пробовал пару вещей, и пока ничего не работает.Преобразование аудиофайла spx в mp3
Я пробовал использовать LameMP3FileWriter из библиотеки Naudio.Lame.
private void WriteOggStreamToMp3File(Stream oggStream, string mp3FileName)
{
var format = new WaveFormat(8000, 1);
using (var mp3 = new LameMP3FileWriter(mp3FileName, format, LAMEPreset.ABR_128))
{
oggStream.Position = 0;
oggStream.CopyTo(mp3);
}
}
Не работает отлично, поскольку полученный mp3-файл - это не что иное, как статический шум.
Я также нашел этот пример на странице Codeplex NSpeex (https://nspeex.codeplex.com/discussions/359730):
private void WriteOggStreamToMp3File(Stream oggStream, string mp3FileName)
{
SpeexDecoder decoder = new SpeexDecoder(BandMode.Narrow);
Mp3WriterConfig config = new Mp3WriterConfig();
using (Mp3Writer mp3 = new Mp3Writer(new FileStream(mp3FileName, FileMode.Create), config))
{
int i = 0;
int bytesRead = 0;
while (i < speexMsg.SpeexData.Length)
{
short[] outData = new short[160];
bytesRead = decoder.Decode(speexMsg.SpeexData, i, speexMsg.FrameSize, outData, 0, false);
for (int x = 0; x < bytesRead; x++)
mp3.Write(BitConverter.GetBytes(outData[x]));
i += speexMsg.FrameSize;
}
mp3.Flush();
}
}
К сожалению, Mp3WriterConfig и Mp3Writer не являются частью текущей библиотеки (NSpeex). И я понятия не имею, что такое «speexMsg».
Так что мой вопрос: как я могу преобразовать spx (в файл ogg) в mp3, используя C#?
Как я могу декодировать файл ogg для PCM? – Kinetic
Я предполагаю, что это возможно с NSpeex. Лучше спросить на сайте проекта. –
Да, я сделал это. Страница NSpeex codeplex, похоже, не активна вообще, поэтому я не надеюсь. Тем временем наши пользователи будут использовать VLC для ручного преобразования. Я отправлю свое полное решение, если найду его. – Kinetic