2010-02-03 5 views
2

샘플 크기로 리샘플링하거나 엉망이없이 많은 소스를 PCM으로 변환하려고합니다. Windows Media Player가 파일을 재생할 수 있고 DirectSound를 사용해야하는 기존 ACM 코덱을 사용하지 않는 것으로 판단됩니다 (Windows XP 및 Windows Server 2k3). C#에서 DirectSound에 액세스하여 그렇게 할 수 있습니까? 나는 웹 검색을 시도했지만 모든 예제는 재생에 대한 관심이 없다.DirectSound를 사용하여 C#에서 오디오를 트랜스 코드 할 수 있습니까?

답변

1

DirectSound는 오디오 재생 API이며 DirectShow을 의미합니다. Windows Media Player는 DirectShow를 사용하여 오디오 파일을 재생합니다. 이론 상으로는 미디어 플레이어가 사용하는 것과 동일한 재생 그래프를 만들고 오디오 드라이버를 .WAV 라이터 필터로 바꾸면됩니다.

DirectShow 그래프 개체가 실제로 C++에서 호출되도록 설계 되었기 때문에 C++ 코드에서 다소 쉽습니다. 그러나 훌륭한 interop 정의 집합을 사용하면 C#에서이를 수행 할 수 있습니다.

.NET에서 DirectShow를 사용하여 심각한 해킹을하는 경우에는 http://directshownet.sourceforge.net/이 있지만 문제가 너무 많습니다.

아직 사본이없는 경우 GraphEdit 복사본을 가져 오는 것이 좋습니다. 대화식으로 직접 쇼 그래프를 "프로토 타입"하기 위해 사용할 수 있습니다. graphedit에 파일을 놓으십시오. 마지막에 필터를 삭제하고 파일 작성기 필터로 바꾸십시오.

DirectShow 필터의 기본 집합에 .WAV 파일 작성자 필터가 없기 때문에 문제를 발견하거나 작성해야합니다.

변환 된 파일을 얻고 싶다면 DirectShow를 사용하여 코드를 작성하는 방법을 배우는 것에 신경을 쓰지 않고 그냥 Sound Forge (데모 버전 일 수도 있음) 복사본을 얻는 것이 좋습니다. 대부분의 오디오 파일 형식을 일괄 처리하는 데 사용할 수있는 스크립팅 언어 (C#, VB)가 있습니다.

1

WAV로 변환은 SoX (Sound eXchange, http://sox.sourceforge.net/)를 사용하여 Windows 명령 줄에서 수행 할 수 있습니다. 적절한 속성으로 SoX를 호출하는 배치 파일 또는 C# 응용 프로그램을 작성할 수 있습니다. WinAMP의 기능이 어떻게 작동하는지 모르겠지만, 파일 작성기 출력 옵션도 내장되어 있습니다. 전체 재생 목록을 웨이브 파일로 스트리밍 할 수 있습니다.

관련 문제