>source

WebRTC (JS가 아닌 기본 Mac 및 기본 Windows)를 사용하고 있으며 기본 재생 및 녹음 장치를 변경하려고하는데 많은 문제가 있습니다. 이 때문에 날 미치기 시작한다할까요매우 간단합니다.

질문:기본적으로 Mac 및 Windows에서 통화가 진행되는 동안 오디오 재생 및 녹음 장치를 변경하는 권장 방법은 무엇입니까?

내가 시도한 것은 다음과 같습니다.

방법 1 맥

오디오 장치 모듈이 Core Audio API 알림을 수신하고 재생 및 녹음 장치를 올바르게 조정하는 것으로 나타났습니다. 이것은 작동하지만 이것이 장치를 변경하는 데 권장되는 방법인지 확실하지 않습니다.

윈도우

시스템 전체에서 기본 오디오 재생/녹음 장치를 설정하는 방법을 찾을 수 없었습니다. 내가 말할 수있는 유일한 방법작업은 오디오 장치 모듈에 대한 참조를 가져 와서 SetPlayoutDevice / SetRecordingDevice 수동으로 ... 아래 방법 2로 이어집니다.

방법 2 맥

가능하면 차라리 SetPlayoutDevice (링크) / SetRecordingDevice (링크) 오디오 입력/출력을 변경합니다 (Mac과 Windows가 동일한 방식으로 작동 함).

그만큼단위 테스트 실제 오디오 IO 장치를 테스트하려면 호출 할 수 있어야합니다. StartPlayoutStopPlayout 에 전화 후 SetPlayoutDevice -하지만 이로 인해 앱이 정지됩니다. 나는 전화없이 그것을 시도했다 StopPlayoutStartPlayout 그러나 그것은 아무것도하지 않는 것 같습니다. 이것은 내부 상태 만 수정되고 아무것도 수정되지 않은 것처럼 보이므로 의미가 있습니다.

Q : Mac에서 기본 오디오 재생 장치 및 녹음 장치를 변경하려면 어떻게해야합니까?

윈도우

아직 Windows에서이 기능을 사용해 볼 기회가 없었지만 Mac이 작동하지 않아 여기에 누락 된 것이 있다고 생각합니다.

  • 답변 # 1

    직접 대답합니다.

    VoEHardwareImpl (https://chromium.googlesource.com/external/webrtc/stable/webrtc/+/refs/heads/master/voice_engine/voe_hardware_impl.cc)에 관련 코드가있는 것 같습니다.

    플레이 아웃 :

    StopPlayout

    ... 장치 색인 설정 ...

    StereoPlayoutIsAvailable

    SetStereoPlayout

    InitPlayout

    StartPlayout

    녹음 :

    녹화 중지

    ... 장치 색인 설정 ...

    StereoRecordingIsAvailable

    SetStereoRecording

    InitRecording

    녹화 시작

    사용중인 커밋에 따라 교착 상태에 빠지지 않도록해야 할 수도 있습니다. 이러한 메소드 중 일부는 잠금을 획득하므로 잠금이 필요한 메소드를 호출하는 경우 잠금이 아직 획득되지 않았는지 확인하십시오. 더 나은 방법-이 작업을 한 수준 이상으로 수행하거나 가능하면 adm을 래핑하십시오.

관련 자료

  • 이전 excel - 기준에 따라 한 시트에서 다른 시트로 데이터 복사
  • 다음 javascript - 텍스트 인식 및 이벤트