Заснемах аудио с помощта на режима за обратно улавяне. Заснетата форма на вълната е 32-битова форма на вълната. Затруднявам се с преобразуването на това в 16-битова вълнова форма, така че енкодери като lame да могат да се справят с него (пише Неподдържан формат на данните: 0x0003).
Опитах се да преместя битовете (не е моята силна страна) в самия вълнов поток от 32 бита на 16 бита, но резултатът все още звучи изкривен.
Класът Wave32To16Stream изглежда се взривява в този случай: if (sourceStream.WaveFormat.Encoding != WaveFormatEncoding.IeeeFloat) throw new ApplicationException("Поддържа се само 32 бита с плаваща запетая");
В идеалния случай бих искал просто да заснема направо до 16 бита, няма ли начин да задам битовата дълбочина на улавяне? Ако не, може ли някой да ми помогне с преобразуването на вълновия поток?
Пример за уловена форма на вълната може да се намери тук: http://dl.dropbox.com/u/454409/test.wav (10mb)
Бих се задоволил и с някакъв начин да кодирам това в mp3 с lame, опитах всяка пермутация на параметър, за която мога да се сетя, за да го накарам да приеме файла с вълна. Интересното е, че Audacity (който използва lame_enc за кодиране на mp3) успя да създаде mp3 от формата на вълната (но може би Audacity автоматично го преобразува в 16-битов, преди да го прехвърли на lame).