2013-05-22 1 views
2

Windows의 python2.7에서 "마이크 (2 고품질 오디오 장치)"와 같은 문자열이 될 기본 마이크의 이름을 가져와야합니다.Windows : 기본 마이크 이름을 얻으십시오

첫 번째 시도는 하위 프로세스 인 wmic path Win32_SoundDevice get * /format:list을 사용하여 WMI를 쿼리하는 것이 었습니다. 불행히도, 이것은 스피커뿐만 아니라 마이크를 돌려주는 것처럼 보이고, 두 가지를 구분할 수있는 어떤 속성도 볼 수 없습니다. 올바른 기기의 이름이 올바른 형식이 아닙니다 (예 : "Microphone (2 High Definition Audio Device)"이라는 정확한 문자열 대신 단순히 "High Definition Audio Device"로 나타납니다.

나의 두 번째 시도는 PyAudio (PortAudio에 파이썬 바인딩)를 사용하는 것이 었습니다. PyAudio().get_default_input_device_info()["name"]을 호출하면 나도 꽤 가깝지만, 불행히도 그 이름은 어떤 이유로 잘려나 간다! 반환 값은 "마이크 (2 - 고화질)"(길이가 31 자로 잘림)입니다.이 문자열의 자르지 않은 버전 만 얻을 수 있다면 완벽 할 것입니다.

가장 간단한 것은 무엇입니까? 대부분의 독립적 인 방법은 기본 마이크 이름을 가져 주셔서 감사

+0

: http://stackoverflow.com/questions/1429143/get-the를 -full-audio-device-name-from-windows – AlcubierreDrive

답변

0

을 분명히 내가는 FFmpeg에서 전체 문자열을 얻을 수 있습니다 다음과 같이?!

ffmpeg -list_devices true -f dshow -i dummy

을 그리고 마이크의 이름이 될 것입니다 "DirectShow 오디오 장치"뒤에 줄에

+0

사실, 이것이 항상 작동하지는 않습니다. 그것은 Windows 8 타블렛에서 작동하지만, Windows 7 데스크탑에서는 잘린 문자열을 반환했습니다. – AlcubierreDrive

+0

dshow는 항상 잘린 것처럼 보입니다. 잘하면 다른 방법으로 그들을 열거 할 수 있습니다 ... – rogerdpack

1

PortAudio에서 저의 경험으로는 MME 장치의 이름이 32 자로 잘립니다. 이 동작은 WMME API에만 해당된다는 것이 항상 전제 조건이었습니다. DirectSound 또는 WASAPI와 같은 다른 API에서 동일한 물리적 장치에 대한 정보를 쿼리 할 수 ​​있어야합니다. (C/C++에서는 PortAudio를 WASAPI 및/또는 DirectSound로 컴파일하도록 구성해야합니다.) WASAPI 또는 DirectSound 장치와 동일한 물리적 장치를 쿼리하면 장치 이름의 모든 문자에 액세스 할 수 있습니다. 기본 장치 이름을 가져온 다음 기본 장치 이름과 일치하는 다른 장치를 검색하여이 작업을 수행 할 수 있어야합니다.

같은 것을 보일 것입니다 기본의 DirectSound 입력 장치의 이름을 얻기 위해 파이썬 코드 : 잘림 문제와 관련

deviceIndex = get_host_api_info_by_type(paDirectSound)["defaultInputDevice"] 
deviceName = get_device_info_by_index(deviceIndex)["name"] 
+0

감사! DirectSound 또는 WASAPI에서 기본 마이크 이름을 쿼리하는 파이썬 코드 예제를 제공해 주시면 답변을 수락하겠습니다. – AlcubierreDrive

관련 문제