Изменение уровня громкости звука - C#
Формулировка задачи:
Доброе время суток. Пишу диплом где нужно реализовать изменение уровня громкости. Пытаясь решить эту задачу я нашол два варианта: 1 это использовать wmplib.settings; 2 это менять уровень звука в ос. Тут возникла проблема мне надо менять уровень громкости не воздействуя на файл. Изменение уровня громкости через ос подходит, но мне надо сделать программу так чтобы она работала и на windows XP и на windows 7 и на windows 8. И при таком подходе тут лучше подходит wmplib. Но я не могу использовать wmplib поскольку не понимаю как это работает (засчет чего идет изменение уровня громкости).
Пожалуйста подскажите где можно почитать о принципе действия wmplib или подскажите как мне реализовать изменение уровня громкости не воздействуя на воспроизводимый файл.
Решение задачи: «Изменение уровня громкости звука»
textual
Листинг программы
using System; using NAudio.CoreAudioApi; namespace ConsoleApplication1 { class Program { static void Main() { CoreAudioMicMute CAMM = new CoreAudioMicMute(); CAMM.SetMute(true); Console.ReadKey(); } internal class CoreAudioMicMute { private MMDevice[] rgMicDevice; //Для записи найденных для нас устройств int MaxRender = 0; public CoreAudioMicMute() { MMDeviceEnumerator DevEnum = new MMDeviceEnumerator(); MMDeviceCollection devices = DevEnum.EnumerateAudioEndPoints(DataFlow.Render, DeviceState.Active); // DataFlow.Render - Колонки, Наушники(или устройства из которых поступает звук), DeviceState.Active - Активные устройства // Поиск активных устройств(для нас колонок) MaxRender = 0; for (int i = 0; i < devices.Count; i++) // devices.Count - количество устройств(активные колонки) { MMDevice deviceAt = devices[i]; if (deviceAt.DataFlow == DataFlow.Render && deviceAt.State == DeviceState.Active) { ++MaxRender; } } // Заносим в массив (все) найденный(ые) колонки/наушники rgMicDevice = new MMDevice[MaxRender]; MaxRender = 0; for (int i = 0; i < devices.Count; i++) { MMDevice deviceAt = devices[i]; if (deviceAt.DataFlow == DataFlow.Render && deviceAt.State == DeviceState.Active) //Меняем на свое устройство(а) { MaxRender++; rgMicDevice[MaxRender - 1] = deviceAt; } } if (MaxRender == 0)//Если не найденo ни одинo устройство Console.WriteLine("Не найдено!"); } public void SetMute(bool mute) //Функция, изменяющая уровень звука устройств записанных в массив private MMDevice[] rgMicDevice { for (int i = 0; i < MaxRender; i++) { //rgMicDevice[i].AudioEndpointVolume.Mute = mute; //= true - выключить звук устройства rgMicDevice[i].AudioEndpointVolume.MasterVolumeLevelScalar = 0.80F; //Поставить уровень на 80 } } } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д