C# 믹싱 오디오 및 마이크 마이크 동시 녹화

2105 단어 SharpCapture
프로젝트에서 우리는 생방송실, 온라인 수업 등 사운드카드의 소리와 마이크의 소리를 동시에 녹음해야 할 수도 있다.그렇다면 어떻게 실현될까?당연히 SharpCapture!다음은 중요한 코드를 보여 줍니다. 또한 문장 마지막에 모든 원본을 다운로드할 수 있습니다.

라이센스 설정


1단계: 에서 SharpCapture를 참조했습니다.dll 이후, SharpCapture 방법을 호출하기 전에 반드시 아래 코드를 통해 권한 수여 정보를 설정해야 하며, 시험판이라면 Test를 직접 입력하면 된다.
KeyMgr.SetKey("Test");

IMixer 샘플 가져오기


앞의 블로그에서 우리는 한 장의 그림으로 SharpCapture를 이해했다. 그 글에서 알 수 있듯이 SharpCapture는 IMixer를 통해 믹스를 한다. 믹스는 사운드카드의 소리와 마이크의 소리를 같은 소리로 녹음하여 후속 처리를 편리하게 하는 것을 말한다.그러면 어떻게 이 인터페이스의 예시를 얻어서 이 인터페이스가 제공하는 각 방법을 사용합니까?다음 코드를 확인하십시오.
//     ,          
microphone = CaptureFactory.GetMicrophoneCapture(0);

//      
soundcard = CaptureFactory.GetSoundcardCapture();

//     
mixer = CaptureFactory.GetAudioMixter(microphone, soundcard, SoundcardMixMode.DoubleChannel, true);

믹서기는 당신이 사운드카드 채집기와 마이크 채집기를 전송하고 믹스를 설정하는 방식을 필요로 합니다. 예를 들어 여기는 좌우 사운드가 믹스에 참여하고 출력할 때 이중 사운드를 보존합니다.어떻게 설정해야 할지 모르면 이 설정을 사용하면 됩니다.

바인딩 이벤트


IMixer의 예제를 가져오면 바인딩 이벤트인 MixedAudio DataCaptured입니다.엔진이 소리 데이터를 수집하고 믹스할 때마다 이 이벤트의 응답 함수에 데이터를 넘기면 다음 처리를 할 수 있습니다. 예를 들어 오디오 파일로 저장할 수 있습니다.
 //            ,         ,        
mixer.AudioMixed += new SGDelegate(MixedAudioDataCaptured);

처리 데이터


사운드 바이트 흐름을 가져온 후 후속 처리를 할 수 있습니다.
/// 
///        
/// 
///     
public void MixedAudioDataCaptured(byte[] audioData)
{
    if (this.InvokeRequired)
    {
        this.BeginInvoke(new SGDelegate(MixedAudioDataCaptured), audioData);
    }
    else
    {
        //  wav   
        if (mixWav != null)
        {
            mixWav.WriteAudioData(audioData);
        }
    }
}

채집을 시작하다


상술한 절차를 마치면 채집을 시작할 수 있습니다.다음과 같습니다.
//       
microphone.Start();
soundcard.Start();

채집을 멈추다


다음 코드를 사용하여 채집을 중지할 수 있습니다.
//       
microphone.Stop();
soundcard.Stop();

demo 소스 다운로드


클릭하여 원본 다운로드

좋은 웹페이지 즐겨찾기