DirectShow FAQ

이 것은 마이크로소프트의 DirectShow 에 대해서 아주 많이 물어보는 질문에 대한 답변을 서술한 문서로 아래의 섹션을포함합니다.

  • 일반적인 질문들
  • 프로그래밍에 관련된 질문들

일반적인 질문들

어떤 OS 들이 DirectShow 를 지원합니까?

DirectShow 를 지원하는 OS 는 다음과 같습니다.

  • Microsoft?? Windows?? 9x
  • Microsoft?? Windows?? 2000
  • Microsoft?? Windows?? Me
  • Microsoft?? Windows?? XP Home Edition
  • Microsoft?? Windows?? XP Professional

DirectShow 를 사용하여 프로그램을 만들려면 어느정도의 COM 지식이 있어야 합니까?

어플리케이션을 개발하기 위해서는 COM 오브젝트를 운용하는 기초지식만 알면 됩니다. : COM 오브젝트를 인스턴스화 하는 방법, 노출된 인터페이스에 접근하는 방법, 인터페이스의 참조 카운트를 다루는 방법.

필터를 개발하고자 한다면 이보다 약간 더 COM 지식이 필요합니다.

DirectShow 는 어떤 포멧을 지원합니까?

이 문서를 참고하세요. Supported Formats in DirectShow.

DirectShow 와 호환되는 하드웨어 리스트가 있나요?

아니오. 리스트는 없습니다. DirectShow 는 사용 가능한 하드웨어가 있다면 마이크로소프트의 DirectDraw 와 DirectSound 를 사용합니다. 하지만 특별한 하드웨어가 없다면 DirectShow 는 비디오를 그리기 위해서 GDI 를 사용하고 사운드를 출력하기 위해서 waveOut* 의 멀티미디어 API 를 사용합니다.

어떤 언어를 사용하여 DirectShow 어플리케이션을 만들 수 있나요?

DirecctShow 는 주로 C++ 로 개발되는 것에 맞추어 디자인 되었습니다. (물론 C 도 사용할 수 있습니다) 마이크로 소프트의 비주얼 베이직으로는 DirectShow API 들의 많은 부분을 다룰 수 있지만 모든 것을 다룰 수는 없습니다. DirectShow 는 마이크로 소프트의 JScript 또는 Visual Basic Scripting 의 스크립트에 기반한 DVD 어플리케이션을 지원합니다. 또한 DirectShow 는 Borland Delphi 에 의해서 사용 될 수도 있습니다만 이 문서에서는다루지 않습니다. ( Borland C++ Builder 에서도 다룰 수 있습니다 ^^ )

정보를 더 원하시면 아래의 문서를 읽어주세요. [ 차차 업 하겠습니다 ^^; ]

  • Controlling Filter Graphs Using C
  • Using DirectShow with Visual Basic
  • Writing a Script-Based DVD Application

DirectShow 를 사용하여 개발을 하려면 어떤 컴파일러가 필요합니까?

COM 을 다룰 수 있는 컴파일러면 됩니다. 만약 여러분이 마이크로소프트의 Visual C++ 이 아닌 다른 컴파일러를 사용한다면 컴파일러의 차이점 때문에 클래스 라이브러리들을 재컴파일 해야 할지도 모릅니다.

DirectShow 는 마이크로소프트 Windows Media 와 관련 되어 있습니까?

Windows Media Applications 의 문서를 보세요

DirectShow 는 마이크로소프트의 DirectX 의 다른 컴포넌트들과 관련 되어 있습니까?

내부적으로, DirectShow 는 DirectSound 와 DirectDraw 를 사용합니다. 이것은 관련 하드웨어가 그들을 지원할경우에만 그렇습니다. 비디오 렌더와 오버레이 믹서 필터는 DirectDraw3 와 DirectDraw5 의 표면(surfaces)을 사용합니다. Windows XP Home Edition 과 XP Professional 은 비디오 믹싱 렌더에 DirectDraw7 의 표면을 사용합니다. 이들은 마이크로소프트의 새로운 Direct3D API 들을 사용하지 않습니다. DirectShow 용 어플리케이션을 개발할 경우 여러분이 그 API 들을 섞어서 사용할 수 있지만 여러분은 DirectX API 들을 직접 사용할 필요가 없습니다. 예를 들어, Texture3D 의 예제를 살펴보세요.

DirectShow 는 마이크로소프트의 ActiveMovie 와 관련 되어 있습니까?

ActiveMovie 는 DirectShow 의 원래 이름이지만 ActiveMovie 라는 용어는 더 이상 사용하지 않습니다.

DirectShow 는 멀티미디어 어플리케이션 용으로만 사용됩니까?

DirectShow 의 기본 컴포넌트들은 멀티미디어를 위해 설계되었습니다. 하지만 DirectShow 의 아키텍쳐는 여러 종류의 데이타 스트리밍 솔루션에 유용합니다.

GraphEdit 도구의 소스코드는 사용가능합니까? GraphEdit 를 재분배할 수 있습니까?

아니요, 소스코드는 사용가능하지 않고 Graphedt.exe 는 재분배 할 수 없습니다.

DirectShow 필터들을 DMO 들로 교체해야 되나요?

마이크로소프트 DirectX Media Objects(DMOs) 는 DirectShow 어플리케이션에서 사용 될 수 있습니다. 엔코더, 디코더, 이펙트 들에 여러분은 DirectShow 필터 대신에 DMO 를 사용하여 더 좋게 만들 수 있습니다. 다른 목적으로는 DirectShow 필터가 더욱더 적절합니다. 더 자세한 정보를 원하신다면 DirectX Media Objects 의 문서를읽어주세요.

DirectShow 에 관한 정보를 어디서 더 얻을 수 있나요?

월드와이드웹 : MSDN DirectX Developer Center
메일링리스트 : http://discuss.microsoft.com/archives/DIRECTXAV.html
유즈넷 : microsoft.public.multimedia.directx.dshow.programming

어플리케이션이나 필터를 개발 중에 어려운 문제에 직면하면 어디서 개발자 지원을 얻을 수 있습니까?

DirectX SDK 전화 : (800) ***-****
MSDN 구독자라면 MSDN 을 사용할 수 있습니다.
MSDN Online 을 무료로 사용할 수 있습니다.
질문을 하고 싶다면 http://support.microsoft.com/support/webresponse.asp

DirectShow 를 설명한 좋은 책이 있습니까?

현재, DirectShow 만을 주제로 한 책은 없습니다. 하지만 DirectShow 는 몇몇 DirectX 책에서 다루어지고 있습니다. 아래의 책들을 참고하세요.

  • Sams Teach Yourself DirectX in 24 Hours by Robert Dunlop, Dale Shepherd, and Mark Martin (Sams)
  • DirectX, RDX, RSX, and MMX Technology by Rohan Coelho and Maher Hawash (Addison Wesley)

비록 DirectShow 가 이 책들에서 다루어지고 있지만, 최고의 정보는 Direct SDK 와 함께 제공되는 DirectShow의 문서 셋트와 샘플 코드입니다.

마이크로소프트에 피드백과 버그 리포트를 어떻게 하나요?

DirectX 에 관한 대부분의 이슈들은 directx@microsoft.com 의 주소로 보내주시면 됩니다. 버그를 리포트하기 위해서는 dxbugs@microsoft.com 으로 보내주세요.

DirectShow 를 개선시킬 아이디어가 있습니다.

마이크로소프트는 제안, 질문, 비평 들을 환영합니다. 당신의 생각을 우리가 알게 해 주세요. 우리가 무엇을 실수했나요? 당신이 보기에 어떤 부분을 개선시켜야 할까요? 어떤 종류의 튜토리얼과 샘플들이 당신이 보기게 가장좋은가요? 당신의 대답은 우리가 앞으로 우선 해야할 일을 알려줍니다. 만약 당신이 새로운 DirectShow 문서에 질문이나 제안등이 있으면 askdshow@microsoft.com 으로 메세지를 보내주세요.

저는 AVI 포멧의 파일을 Windows Media Player 로 재생했습니다. 소리는 들을 수 있었지만 어떤 화면도 보이지 않고 대신에 온통 검은 화면만 보였습니다. 무엇이 잘 못된 건가요?

아마도 그 파일은 당신의 시스템에 설치되지 않는 코덱으로 엔코드 된 파일인 것 같습니다. 비록 AVI 파일 포멧이 평범한 것이라도 AVI 파일들은 많고 다른 코덱(coder/decoder)들로 만들어질 수 있습니다. 만약 당신이 지원하지 않고 있는 코덱을 사용하는 AVI 파일을 재생시킨다면 당신은 아마도 소리를 들을 수 있겠지만 화면은 계속 검은 화면 또는 변화가 없는 화면을 볼 것입니다.

주의 : Windows Media Player 는 당신의 시스템에서 제공되지 않는 코덱을 위해서 종종 다운로드를 시행하고 코덱을 설치합니다.

Windows 2000 에 포함된 몇몇 코덱은 Radius Cinepak, Duck TrueMotion, Intel Indeo, Microsoft RLE, and Microsoft Video 입니다.

A. Windows 2000 에서 시스템에 설치된 비디오 코덱의 리스트를 보기 위해서는 아래의 절차를 실행해 주세요.

  1. 제어판을 실행합니다.
  2. 사운드 및 멀티미디어를 클릭합니다.
  3. 하드웨어 탭을 클릭합니다.
  4. 비디오 코덱을 선택합니다
  5. 등록정보 버튼을 클릭합니다.
  6. 등록정보 탭을 클릭합니다.

B. 미디어파일이 무슨 코덱을 사용하는 알고 싶은데 어떻게 하나요?

  1. 탐색기에서 파일을 선택한 후 마우스 오른쪽버튼을 눌러주세요
  2. 등록정보를 눌러주세요
  3. 요약 탭을 눌러주세요

프로그래밍 질문

어플리케이션을 빌드하기 위해서 어떤 라이브러리들과 헤더파일들이 필요한가요?

Setting Up the Build Environment 의 문서를 참고하세요

GraphEdit 에서 문서화 되어 있지 않은 필터들이 많이 보입니다. 이 필터들은 무엇이죠?

GraphEdit 는 당신의 시스템에 있는 필터 카페고리에 등록되어 있는 필터들을 모두 열거합니다. 여기에는 서드파티들에 의해서 설치된 필터들과 또는 마이크로소프트의 다른 기술들 예를 들어 Windows Media 또는 NetMeeting 에 의해서 설치된 필터들일 수 있습니다. Microsoft H.263 비디오 코덱은 넷미팅에서 사용되었지만 더 이상 DirectShow 에서는 지원을 하지 않습니다. 더 많은 정보를 원하신다면 Enumerating Devices and Filters. 을 읽어 보세요

커스텀 그래프를 만드는데 문제가 있습니다.

우선 GraphEdit 로 필터 그래프를 만들려고 시도해 보세요. 이 도구는 많은 가능성을 빠르게 시험해 볼 수 있게 해줍니다. GraphEdit 는 소스코드의 빌드를 시도하기 전에 그래프를 시험해 보기에 좋습니다.

그래프 만들기에 더 많은 정보를 원하신다면 아래의 글을 읽어 주세요.

  • Building the Filter Graph
  • Enumerating Objects in a Filter Graph

시스템에 DirectShow 가 설치되어 있는지 어떻게 알죠?

필터 그래프 매니져(Filter Graph Manager)의 인스턴스를 만들기 위해서 CoCreateInstance 를 호출하세요. 이 호출이 성공한다면 DirectShow 는 그 시스템에 설치 되어 있는 것입니다. 이 것을 어떻게 하는지 아래의 코드를 참고하세요.

IGraphBuilder *pGraph; HRESULT hr = CoCreateInstance(CLSID_FilterGraph,
NULL, CLSCTX_INPROC_SERVER,
IID_IGraphBuilder, (void **) &pGraph);

속성 페이지를 보이지 않고 필터의 설정을 어떻게 바꾸나요?

대부분의 필터들은 필터 속성들의 설정을 위하여 하나 또는 그 이상의 인터페이스들을 노출합니다. 이 질문에는 필터의 레퍼런스 페이지를 참고하세요.(DirectShow Filters 를 보세요)

왜 ASF Writer 과 ASF Reader 필터들은 사용할 수 없습니까?

당신이 어플리케이션을 개발할 때 당신은 반드시 소프트웨어 인증을 제공해야 합니다. 더 많은 정보를 원하시면 Creating ASF Files in DirectShow and Windows Media Format SDK 의 문서를 읽어 보세요. 또한 당신은 이 필터들을 GraphEdit 에서도 사용할 수 없습니다.

DirectShow 는 정기적으로 현재 재생 위치에 대해서 어플리케이션에 통지할 수 있나요?

위치에 대한 통지는 없습니다. 타이머를 사용해서 IMediaSeeking::GetCurrentPosition 메서드를 호출하여 현재 포지션을 반영하세요.

필터를 만들었습니다. 어떻게 설치하나요?

How to Register DirectShow Filters 의 문서를 참고하세요.

GraphEdit 에서 제가 만든 필터를 테스트 할 수 있습니까?

당신이 필터를 개발 중이라면 GraphEdit 는 당신에게 필터들간에 연결을 시각화하여 도움을 줄 수 있습니다. 또한 필터의 기능을 빠르게 시험할 수 있게 해줍니다. 하지만 이 것이 완벽한 테스트 플랫폼임을 뜻하진 않습니다.

필터의 핀 개수를 어떻게 결정할 수 있죠?

Enumerating Objects in a Filter Graph 의 문서를 읽어 보세요.

필터를 실행할 수 있는 권한은 몇 ring 인가요?

비록 몇몇 필터들은 ring 0 에서 스트리밍 장치를 제어하지만 대부분의 필터들은 ring 3 에서 실행됩니다. 더 많은 정보를 원하시면 How Hardware Devices Participate in the Filter Graph. 의 문서를 참고하세요.

출처 : 포도나무
글쓴이 : 포도나무 원글보기
메모 :

+ Recent posts