2014-02-16 2 views
0

Как преобразовать волну с кодировкой: ALaw, SampleRate: 8000, BitsPerSample: 8, Channels: 1, Block Align Channels: 1, бит в секунду: 8000 для волны с кодировкой pcm и такие же параметры первой волны? Я использовал ALawDecoder от http://www.codeproject.com/Articles/14237/Using-the-G711-standard, теперь у меня есть набор шорт (а не байтов)! как я могу преобразовать короткий массив в массив байтов и воспроизвести его с помощью NAudio.WaveOut и как я могу записать его в волновой файл?конвертировать a-law в pcm

+0

, если вы должны сделать это программно, почему бы не использовать что-то вроде смелости? –

ответ

0

Вы расшифровываете Alaw в PCM, что соответствует 16 BitsPerSample - вот почему вы получаете массив из short s.

Вы можете использовать Buffer.BlockCopy(), чтобы скопировать их в byte[]:

byte[] result = new byte[shortArray.Length * sizeof(short)]; 
Buffer.BlockCopy(shortArray, 0, result, 0, result.Length); 
0

Вместо этого длинного пути, я использовал эту простую строку кода:

WaveFormatConversionStream conv = new WaveFormatConversionStream(WaveFormat.CreateCustomFormat(WaveFormatEncoding.Pcm, 8000, 1, 16000, 2, 16), inputStream); 
+0

с использованием библиотеки NAudio – Alen

Смежные вопросы