SounPlayer не воспроизводит 8-битный PCM - PullRequest
0 голосов
/ 01 января 2019

Извините, что прерываю вас в новогоднее время, но мне действительно нужна помощь!У меня есть файл необработанных данных.Я добавляю к нему заголовок wav, используя:

            sound.Add(0x52);
            sound.Add(0x49);
            sound.Add(0x46);
            sound.Add(0x46);

            sound.Add(0x24);  //sound.Add(0x00);
            sound.Add(0x80); //sound.Add(0x00);
            sound.Add(0xb8); //sound.Add(0x00);
            sound.Add(0x05); //sound.Add(0x00);

            sound.Add(0x57);
            sound.Add(0x41);
            sound.Add(0x56);
            sound.Add(0x45);

            sound.Add(0x66);
            sound.Add(0x6d);
            sound.Add(0x74);
            sound.Add(0x20);

            sound.Add(0x10);
            sound.Add(0x00);
            sound.Add(0x00);
            sound.Add(0x00);

            sound.Add(0x01);
            sound.Add(0x00);
            sound.Add(0x04); //4
            sound.Add(0x00);

            sound.Add(0x40);
            sound.Add(0x1f);
            sound.Add(0x00);
            sound.Add(0x00);

            sound.Add(0x00);
            sound.Add(0x7d);
            sound.Add(0x00);
            sound.Add(0x00);

            sound.Add(0x04);
            sound.Add(0x00);
            sound.Add(0x08);
            sound.Add(0x00);

            sound.Add(0x64);
            sound.Add(0x61);
            sound.Add(0x74);
            sound.Add(0x61);

            sound.Add(0x00);
            sound.Add(0x80);
            sound.Add(0xb8);
            sound.Add(0x05);

            sound.Add(0x00);
            sound.Add(0x80);
            sound.Add(0x00);
            sound.Add(0x00);

Да, это ужасно, но я новичок в работе со звуком.Звук - это Список байтов, который я получаю из файла.Затем я пытаюсь воспроизвести этот байтовый массив:

using (MemoryStream ms = new MemoryStream(sound.ToArray())) {
     SoundPlayer sp = new SoundPlayer(ms);
     sp.Play();    
}

Но я ничего не слышу от звукового проигрывателя. Однако, когда я переключаю количество каналов на 2 и PCM на 16, все в порядке, но звук«испорчен», и я не слышу того, что мне действительно нужно услышать. |Кроме того, когда я записываю этот список байтов в wav-файл и пытаюсь его воспроизвести, то проигрыватель Windows MediaPlayer воспроизводится нормально.Итак, почему я не играю на 8-битном 2-канальном?Или проще программно сменить PCM на 16 бит, но как?

...