Как конвертировать wav stereo в mono?

295
02 апреля 2017, 01:32

Догадываюсь что такие вопросы здесь не любят, но всё же рискну...

Как сконвертировать аудиофайл в wav есть рабочий пример, но вот как изменить wav мне примеров найти не удалось даже по англоязычным запросам. Предполагал что этот пример нужно разрабатывать, но я так и не понял, как там указать wav файл с которым код должен работать...

Может кто уже имел дело с bass.dll (bass.net) и может подсказать решение?

upd

Нашёл код который должен реализовывать данную возможность, но почему-то сконвертированный им wav файл не воспроизводится. Кто-то может подсказать, в чём причина?

public static void MixStereoToMono()
    {
        byte[] input = File.ReadAllBytes("options.wav");
        byte[] output = new byte[input.Length / 2];
        int outputIndex = 0;
        for (int n = 0; n < input.Length; n += 4)
        {
            int leftChannel = BitConverter.ToInt16(input, n);
            int rightChannel = BitConverter.ToInt16(input, n + 2);
            int mixed = (leftChannel + rightChannel) / 2;
            byte[] outSample = BitConverter.GetBytes((short)mixed);
            // copy in the first 16 bit sample
            output[outputIndex++] = outSample[0];
            output[outputIndex++] = outSample[1];
        }
        File.WriteAllBytes("options1.wav", output);
    }

Изначальный аудиофайл имеет такие характеристики: PCM, 22.1 kHz, 2 chn, 16 bit, 705.6 kbit/s

upd 2

Оказывается проблема выше указанного кода в том, что он не учитывает заголовок файла, с которым нужно работать отдельно. Сейчас попытаюсь найти информацию о корректном формировании заголовка.

Answer 1

Посмотрите здесь. Помогал считывать амплитуды из WAV, но там случай для mono. В случае stereo вам нужно читать каждую нечетную либо четную амплитуду.

READ ALSO
Microsoft.Azure.DocumentDB After update Error (Method not found)

Microsoft.Azure.DocumentDB After update Error (Method not found)

When i updatet documentDB sdk i have this error

265
Отображение пустых ячеек в DataGridView C#

Отображение пустых ячеек в DataGridView C#

Здравствуйте! При загрузке WinForm формы вызывается метод, который должен заполнить DataGridView данными полученные с запроса (использую MySQL) Запрос...

446
Сервер для программы

Сервер для программы

У меня есть плеер, написанный на C#Я хочу создать удаленный сервер для того чтобы записывать плейлисты пользователя, для авторизации в приложении...

240
Замена символа во время ввода datagridview

Замена символа во время ввода datagridview

Есть необходимость заменять символ во время ввода текста в ячейку datagridview, нужно "," менять на ":"Посоветуйте как реализовать?

206