2014-01-18 9 views
3

사운드 출력에 액세스하는 각 Windows 응용 프로그램의 현재 오디오 출력 레벨을 출력하는 C# 코드를 작성하려고합니다 (끊임없이 변화하는 녹색 막대와 같이 표시됨). 볼륨 믹서). 윈도우 미디어 플레이어 : 30, 모질라 파이어 폭스 : 0, 어도비 플래시 플레이어 :개별 Windows 응용 프로그램의 현재 볼륨 출력을 오디오에서 시각화 한대로 표시합니다. 믹서

이 프로그램은이 같은 매 10 밀리 및 출력 STH 확인합니다 나는 윈도우 7 사용하고

(그림에 따라) 35, C#에서 (자바가 이것을 달성 할 수 없기 때문에) 시도해보십시오.

실행중인 응용 프로그램의 마스터 볼륨 (Windows Media Player의 경우 65 %를 나타내는 핸들 막대)을 가져오고 설정하는 방법을 찾았 으면 녹색 변동 레벨 데이터를 가져 오는 방법이 있습니까?

감사합니다.

Audio Mixer

답변

13

당신은 CSCore를 사용할 수 있습니다. CoreAudioAPI-Audiosessions에 대한 래퍼가 있습니다.

private static void Main(string[] args) 
{ 
    using (var sessionManager = GetDefaultAudioSessionManager2(DataFlow.Render)) 
    { 
     using (var sessionEnumerator = sessionManager.GetSessionEnumerator()) 
     { 
      foreach (var session in sessionEnumerator) 
      { 
       using (var audioMeterInformation = session.QueryInterface<AudioMeterInformation>()) 
       { 
        Console.WriteLine(audioMeterInformation.GetPeakValue()); 
       } 
      } 
     } 
    } 

    Console.ReadKey(); 
} 

private static AudioSessionManager2 GetDefaultAudioSessionManager2(DataFlow dataFlow) 
{ 
    using (var enumerator = new MMDeviceEnumerator()) 
    { 
     using (var device = enumerator.GetDefaultAudioEndpoint(dataFlow, Role.Multimedia)) 
     { 
      Debug.WriteLine("DefaultDevice: " + device.FriendlyName); 
      var sessionManager = AudioSessionManager2.FromMMDevice(device); 
      return sessionManager; 
     } 
    } 
} 

여기 unittests 살펴보고, 응용 프로그램의 볼륨을 조절하려면 : (: AudioSession-UnitTests 자세한 내용은 unittests를 살펴 위해) 그런 일을 사용하여 다음

+0

감사 thefiloe을. 질문에서 언급했듯이, 마스터 볼륨 (믹서 이미지의 슬라이더 최대 값)을 가져 오거나 설정하는 것은 전에 답변되었습니다 : http://stackoverflow.com/questions/14306048/controling-volume-mixer. 믹서 이미지에 표시된 녹색 값, 즉 현재 오디오 출력 볼륨을 읽으려고합니다.이 값은 계속 변경되며 최대 마스터 볼륨보다 항상 작습니다. – mio

+0

죄송합니다. 당신의 모든 질문을 읽을 시간이 없었습니다. 내 대답을 편집했습니다. –

+0

고마워요! 그것은 작동합니다. – mio