내가해야 할 일은 추가 하드웨어없이 스피커에서 오디오 스트림을 재생하는 것입니다.사운드 캡처 출력
스피커 출력 (사람의 목소리)이있는 경우 일부 이미지를 표시해야합니다. 그렇다면 스피커에서 나오는 소리가 있는지 어떻게 알 수 있습니까?
난 당신을 감사 창
7에 대한 C# .NET을 사용하려고합니다.
내가해야 할 일은 추가 하드웨어없이 스피커에서 오디오 스트림을 재생하는 것입니다.사운드 캡처 출력
스피커 출력 (사람의 목소리)이있는 경우 일부 이미지를 표시해야합니다. 그렇다면 스피커에서 나오는 소리가 있는지 어떻게 알 수 있습니까?
난 당신을 감사 창
7에 대한 C# .NET을 사용하려고합니다.
CSCore을 사용하면 모든 응용 프로그램과 전체 장치의 최고점을 얻을 수 있습니다. 피크 값을 확인하여 사운드가 재생되는지 여부를 결정할 수 있습니다. 응용 프로그램의 피크를 얻는 방법은 example입니다.
[TestMethod]
[TestCategory("CoreAudioAPI.Endpoint")]
public void CanGetAudioMeterInformationPeakValue()
{
using (var device = Utils.GetDefaultRenderDevice())
using (var meter = AudioMeterInformation.FromDevice(device))
{
Console.WriteLine(meter.PeakValue);
}
}
[TestMethod]
[TestCategory("CoreAudioAPI.Endpoint")]
public void CanGetAudioMeterInformationChannelsPeaks()
{
using (var device = Utils.GetDefaultRenderDevice())
using (var meter = AudioMeterInformation.FromDevice(device))
{
for (int i = 0; i < meter.MeteringChannelCount; i++)
{
Console.WriteLine(meter[i]);
}
}
}
그냥 0.05와 같은 제로 또는 무언가 (그 실험을해야 할 수도 있습니다)보다 큰 피크가 있는지 확인 : 그리고 이들은 하나 개의 특정 장치의 피크를 얻을 수있는 방법 두 가지 예입니다. 피크가 특정 값보다 크면 어떤 응용 프로그램이 재생됩니다.
또한보십시오 : http://cscore.codeplex.com/SourceControl/latest#CSCore.Test/CoreAudioAPI/EndpointTests.cs. 얻을 Utils.GetDefaultRendererDevice 구현이 하나 살펴보고 얻을 : http://cscore.codeplex.com/SourceControl/latest#CSCore.Test/CoreAudioAPI/Utils.cs
첫 번째 예는 모든 채널 피크의 평균 피크를 취득하고, 두 번째 예는 출력 장치의 각 채널의 피크를 얻는다.
WASAPI Loopback Capture로이를 수행 할 수 있습니다. 내 오픈 소스 NAudio 라이브러리에는 WasapiLoopbackCapture
이라는 래퍼가 들어 있습니다. WASAPI Loopback Capture의 한 가지 변칙은 시스템이 침묵을 재생할 때 어떤 콜백도받지 못한다는 것입니다 (당신에게 중요하지 않을 수도 있음).
샘플의 값을 실제로 검사 할 필요가없는 경우 WASAPI를 사용하면 장치의 볼륨 레벨을 모니터합니다. NAudio에서 당신은 MMDevice
(당신이 렌더링 MMDeviceEnumerator.GetDefaultAudioEndpoint
와이를 얻을 수 있습니다)
어떻게 WasapiLoopbackCapture 콜백을 잡을 수 있습니까? – Freshchris
가능한 중복 http://stackoverflow.com/questions/1292076/capture에
AudioMeterInformation
또는AudioEndpointVolume
와이 액세스 할 수 있습니다 -sound-output-in-c-sharp) –