Peak Meter für einzelne Programme unter Windows 7

8

Ist es möglich, die Spitzenwerte für einzelne Programme unter Windows 7 zu erhalten, und wenn ja, wie?

Mit WASAPI kann man das gesamte Systemaudio über ein Loopback-Gerät erfassen, aber es wird nicht zwischen den Ausgaben verschiedener Programme unterschieden. Diese Frage bezieht sich auf das Erfassen von Audio für eine bestimmte Anwendung , aber die Antworten scheinen unerschwinglich, wenn es darum geht, alle Programme aufzunehmen, die Audio einzeln abspielen. Dies muss möglich sein, da SndVol es tun kann, wie im Bild unten gezeigt. Die Frage ist, wie wird es erreicht? Wird es durch unexponierte API-Aufrufe durchgeführt oder ist es tatsächlich möglich, so etwas auch über WASAPI zu erreichen?

Danke.

    
jonathanasdf 14.01.2013, 05:29
quelle

3 Antworten

10

Sie listen Audio-Sessions auf und erhalten IAudioSessionControl interfaces (MSDN Code-Snippet ). Der fehlende Teil ist, dass Sie IAudioMeterInformation interface von IAudioSessionControl abfragen können, die Sie bereits halten.

Wenn der Audioendpunkt Peak-Meter unterstützt, können Sie diese Schnittstelle abrufen und IMeterInformation::GetPeakValue für einzelne Sessions verwenden. Und das ist, was SndVol angeblich macht.

Hier ist ein Code, der das Ding :

%Vor%     
Roman R. 16.01.2013, 21:05
quelle
0

Wenn Sie WASAPI betrachten, gibt es eine Schnittstelle zum Erfassen Audio von einem bestimmten Client, aber ich sehe keine höhere Schnittstelle zur Bestimmung der Spitzenpegel. Möglicherweise müssen Sie dazu etwas Code schreiben, es sei denn, es gibt eine Bibliothek, die jemand erstellt hat, um mit diesem WASPI Audio-Arbeiten auf höherer Ebene auszuführen. CHEERS!

    
happy coder 14.01.2013 05:55
quelle
0

Hier ist eine weitere Einstellung: IChannelAudioVolume :: GetChannelVolume . Ich folgte dem Thread auf MSDN von SndVol, und hier bin ich gelandet. Zitat von der Webseite: "Die GetChannelVolume-Methode ruft die Lautstärke für den angegebenen Kanal in der Audiositzung ab." Sie müssten eine Software schreiben, um den Spitzenwert aus diesem Stream zu extrahieren. Meine schnelle Schätzung wäre nur zu vergleichen, ob der aktuelle Wert größer als der letzte größte Wert ist. Wenn dies der Fall ist, wird der aktuelle Wert zur Spitze.

CHEERS!

    
happy coder 16.01.2013 18:52
quelle

Tags und Links