2009-05-08 2 views
4

내 요구 사항은 음성을 녹음하고 (마이크를 통해) 디스크 .wav 파일을 데스크톱 및 웹 응용 프로그램으로 저장할 수있는 유틸리티를 작성하는 것이 었습니다. 특정 사용자를 위해 내가 다른 좋은 방법을 찾지 못했을 때 activeX 기술을 선택했습니다 (당신을 알고지도 할 수 있습니다 .. 환영보다 더 많을 것입니다)C# .net을 사용하여 음성 녹음 (winmm.dll)

나는 winmm.dll (일명 미디어 컨트롤 인터페이스 MCI)) 그리고 완벽하게 잘 작동하지만 Vista에서 실행할 때와 같이 특정 컴퓨터에서 잘 작동하고 서버 2008에서는 작동하지만 Windows 2003과 XP에서는 작동하지 않습니다. 단지 일하는 것은 필수적입니다. 거기에 있거나 내가 윈도우의 다른 풍미에서 작동하도록하기 위해해야 ​​할 일. some1 나는 오디오를 캡처 DirectShow를을 사용

+0

이전 버전의 Windows에서는 존재하지 않는 DLL 문제 일 수도 있습니다. – Nomad101

답변

4

플레이 샘플 :// 기록 저장하는 몇 가지 예제 코드를 권장하는 경우

나는 DirectSound를을 사용하여 상관하지 않습니다. 질문에 C# 태그를 추가 했으므로 DirectShow.NET library을 사용하는 것이 좋습니다. samples도 다운로드하고 캡처 폴더에서 PlayCap 및 CapWMV 샘플을 확인하십시오. CodeProject에서 Audio Capture article을 체크 아웃 할 수도 있습니다.

일부 OS 버전이 작동하는 이유는 해당 시스템에서 오디오 입력이 다른 프로그램에서 작동하는지 확인 했습니까? 사용자가 오디오 장치를 선택하도록 허용 하시겠습니까? 아니면 기본 오디오 장치 만 사용 하시겠습니까? 오류 메시지가 표시되거나 오디오가 아닌 경우 이 forum 당 파일 이름을 큰 따옴표로 묶어야합니다.

4

실제로 오류가없고 예외도없고 wav 파일도 출력되지 않습니다. 반면 Vista 및 2k8에서는 작동하지만 이전 버전에서는 정상적으로 작동하지 않습니다.

m 어떤 명시 적

사용하여 다음 코드를 설정하지 않는 기본 사운드 카드를 사용

[DllImport("winmm.dll", EntryPoint = "mciSendStringA", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)] 
private static extern int mciSendString(string lpstrCommand, string lpstrReturnString, int uReturnLength, int hwndCallback); 

mciSendString("open new Type waveaudio Alias recsound", "", 0, 0); 
mciSendString("record recsound", "", 0, 0); 

중지 기록하고

mciSendString(@"save recsound " + OuputFolderName + FileName + ".wav", "", 0, 0); 
mciSendString("close recsound ", "", 0, 0); 
+0

파일 이름을 큰 따옴표로 묶어보십시오. –