상세 컨텐츠

본문 제목

DirectShow, 다이렉트쇼에서 마이크 녹음하기

directshow

by 경밤 2020. 5. 14. 22:56

본문

반응형

DirectShow에서 어떻게하면 마이크를 캡처(Capture)하여 파일로 저장할까요? 그리고, 어떻게 하면 파일을 우리가 들을 수 있을까요? DirectShow는 처음하는 사람 입장에서 매우 복잡하고, 길고, 절대 사용자에게 친절하지 않습니다.

더군다나 요즈음 트렌드인 Go, Js를 가까이 둔 사람이 한다면, Getting Started문서도 한번 넘기지 못한채 그만두게 될 것이 뻔합니다. 저는 이 복잡하고도 재미있는 어떠한 퍼즐같은 재미를 선사하는 DirectShow를 쉽게 풀어서 말하겠습니다.


그래프 에디터의 사용

앞서 코딩하기 전, 그래프 에디터로 어떠한 필터(단계)를 거쳐가나 도면(그래프)을 오직 마우스 클릭만으로 만들고, 실행 해보겠습니다 그래프 에디터를 사용하기 위해선 이 문서를 참고해주세요!

그래프 에디터를 실행시켜주세요. 그렇다면 아래와 같은 모습일겁니다. 그렇습니까?

맞습니다. 이제 어떻게 해야할까요? 잠시 DirectShow 사용의 Getting Started 문서의 한 '그래프(도면)'을 참고하겠습니다. 위 예제는 하드드라이브에서의 파일을 읽어, 출력하는 예제입니다.

저 사진을 보면 총 5개의 필터가 있습니다. 보이십니까? 모두 각기 다른 분명한 역할을 가지고 있습니다.

하지만 이번 장에서는 소리만 출력할겁니다. 따라서, 맨 끝에 TV모양 앞 두가지 필터 (Avi Decompressor, Video Renderer)는 생략하여 설명하겠습니다.

따라서, 우리는 파일을 File Source (Async)필터로 가져온 후, AVI Splitter로 비디오, 오디오 총 2가지로 파일을 나누었습니다. 그리고, 나누어진 두 스트림(비디오, 오디오)중에서 우리는 오디오 소스만 가져와 Default DirectSound Device로 출력하도록 하겠습니다. 여기서 나온 디바이스는 아래와 같은 것들입니다.

감이 오시나요? DIrectShow는 복잡하지만, 단순히 오디오 소스와 출력 장치를 연결하면 알아서 전송합니다.

이제 반대로, 마이크 입력을 받아서 파일로 저장은 어떻게 할까요? 위 그래프와 매우 유사하게도, 마이크에서 멀티플렉서로, 멀티플렉서에서 파일로 갑니다. 멀티플렉서에 대한 자세한 내용과 역할은 이 문서를 참고하세요!

상단 바의 Graph, Insert Filters 에서 필터를 추가할 수 있습니다.

필터 그래프 사용 / 마이크 캡처링(Capturing) 후 저장(Save)

제일 위의 Audio Capture Sources를 열고, 현재 존재하는 마이크를 선택합니다. virtual-audio-capturer는 아닙니다!

두번 클릭하거나 밑에 Insert Filter를 클릭해서 그래프에 추가합니다.

이제 우리는 마이크에서 오디오 소스를 가져올 수 있습니다. 이제 Mux필터를 연결하여 연결선을 가져오겠습니다. 

DirectShow Filters의 5번째에 AVI Mux 필터가 있습니다. 똑같이 하여 추가해주세요. 그리고 그 밑, File Writer를 추가해줍시다.

아무 폴더로 가서 파일이름을 지정해줍시다. 확장자는 asf나 avi나 상관없습니다. 그렇다면 최종적으로 우리가 추가한 필터들을 이어서 그래프로 만들어주겠습니다.

필터들의 앞에 튀어나온 부분이 있습니다. 그것을 마우스로 꾹 누르고 연결해줍시다. 순서는 마이크, 멀티플렉서, 파일 입니다.

다음으로, 위의 시작 버튼을 눌러서 시작을 하면 녹음이 시작됩니다. 그 다음 아까전 선택한 파일 경로에 가면 녹음된 파일이 있습니다.

 

반응형