Multimedia Programming 17: Introduction to DirectShow Departments of Digital Contents Sang Il Park
Outline DirectShow Graph Editor
참고서적 DirectShow 멀티미디어프로그래밍 신화선 저 한빛미디어
Direct Show란? Microsoft Direct Show: 대부분의 비디오 관련 윈도우 어플리케이션의 기반 마이크로소프트가 만든 다양한 미디어 파일을 다루기 위한 멀티미디어 프레임웍/API 대부분의 비디오 관련 윈도우 어플리케이션의 기반 Windows Media Player/OpenCV DirectShow 는 DirectX의 한 부분으로 배포 현재는 배포 중단 Microsoft Platform SDK 의 한 부분으로 배포
Direct Show만? 비슷한 다른 프레임웍 Apple Computer’s Quick Time 프레임웍 Windows Vista’s media foundation
Direct Show의 특징 다양한 프로그래밍 랭귀지를 서포트 확장 가능한 Filter 기반 프레임 웍 Microsoft Windows Component Object Model(COM) 확장 가능한 Filter 기반 프레임 웍 사용자의 요구에 따라 미디어 파일을 실행/기록 가능
Direct Show 의 역사 선사시대: Video for Windows (1992년) 동영상 재생 및 편집을 위해 Apple의 QuickTime을 대항하고자 개발 (Macintosh) Windows 3.1/3.11의 Free Add-on 후에 Windows 95의 표준에 포함됨 AVI (Audio Video Interleave) FILE format 제안 Media Player 등장 단점: 해상도 제한(320*240) 재생률 제한(30 frame/sec) Apple사의 QuickTime Code 무단 도용 소송 결과: 맥용 office 개발 1억5천만불 apple주식 구매 Windows 95
Direct Show 의 역사 태동기: Active Movie (1996년) Code Name: Quartz Video for windows를 대체 (32bit 시스템 미지원) Internet Explorer 3.0을 통해 배포 스트리밍 미디어 기술 윈도우에서의 MPEG-1을 지원하기 위해 시작 다양한 매체로 부터의 동영상 재생 지원 인터넷, 인트라넷, CD-ROMs MPEG-1: Moving Picture Experts Group 1990 배포 CD-ROM에 어떻게 비디오를 담을 것인가에 대한 규약 1.5 Mbit/sec의 환경, 352*240(29.97 frame/sec) MP3 (MPEG-1 Part 3 Layer 3) 도입
Direct Show 의 역사 전성기: Direct Show (1997년) 1997년 DirectX 5.0의 일부분으로 배포 Windows 98부터 표준 구성 요소로 포함
Direct Show 의 역사 망함: (2004년~) 2004년 DirectX의 기본요소로부터 분리 DirectX Extras 2005년 DirectX에서 완전히 삭제 Mircosoft로부터의 지원 중단 현재 Microsoft Platform SDK의 일부로 배포 Windows Vista의 Media Foundation으로 대체 High-definition(HD) 지원 Digital Rights Management (DRM) 강화 DXVA 2.0 지원 (하드웨어 가속을 이용한 비디오 재생)
DirectShow의 역사 Release Date Version Notes November 1992 Video for Windows 1.0 First public release. Including Microsoft's RLE and Video1 codecs. Video for Windows 1.1 Added Cinepak codec Video for Windows 1.1a Video for Windows 1.1b Video for Windows 1.1c Video for Windows 1.1d Included Indeo 3.2 (Allegedly included source code from Apple's QuickTime for Windows) March 1995 Video for Windows 1.1e Last version for Windows 3.1x August 1995 Video for Windows 95 Bundled with Windows 95 July 1996 Video for Windows NT 32-bit version bundled with Windows NT 4.0 ActiveMovie 1.0 The successor to Video for Windows. Added support for MPEG-1 and QuickTime file formats March 1997 DirectShow 1.0
DirectShow 등장의 배경 멀티미디어 데이터의 특징 항목 요구사항 데이터 처리 멀티미디어 데이터는 대용량/신속함을 요구 동기 문제 비디오와 오디오 + 부가데이터 간의 동기 문제 처리 다양한 입력 로컬, 네트워크, 비디오 카메라, TV, 사운드 카드 등 다양한 입력 처리 다양한 포멧 AVI, ASF/WMV, MPEG, DVD, MP3, WAV등 다양한 파일 포맷 지원 다양한 출력 비디오 카드, 사운드 카드, 로컬, 네트워크 등 다양한 방식의 출력 지원 하드웨어 장치 하드웨어의 존재 유무에 따라 최대한 활용
DirectShow 등장의 배경 Direct Show의 해결 방안 항목 해결 방안 데이터 처리 DirectDraw와 DirectSound를 사용하여 처리의 효율성 극대화 동기 문제 타임 스탬프를 사용한 멀티미디어 샘플로 포장하여 동기화 다양한 입력 ‘필터(FILTER)’라는 컴포넌트 구조를 통해 다양한 요구 조건을 만족 다양한 상황에 대해 적절히 컴포넌트를 조합 다양한 포멧 다양한 출력 하드웨어 장치 DirectDraw와 DirectSound의 하드웨어 추상화를 이용
Direct Show의 필터? 콤포넌트 기반: 멀티미디어 처리 단계를 필터들의 연결로 구현 필터: 데이터 처리의 단계 필터의 연결을 통해 작업을 구현 (필터 그래프) 예) MP3 재생 장점: 여러 가지 조합으로 필터 연결 가능 자신만의 필터 디자인 가능 (예:새로운 압축코덱 개발) 파일열기 소리부분추출소리압축디코딩사운드카드제어
Direct Show의 특징 개발과정을 Filter Graph를 만드는 것으로 대체 범용 미디어 파일 포맷 지원 MPEG1 + MP3 WMV (Windows Media Video) Royalty-free MP3 Player Microsoft 가 Fraunhofer의 License 구입 Direct show에 포함 필터 (=Codec) 인스톨을 통한 확장성 Ogg Vorbis files AC3 …
Direct Show의 단점 단순 동영상 재생은 아주 쉽다. 그러나… 자신만의 필터 개발은 어렵다 “One of Microsoft’s most complex development APIs” DirectShow Base Classes 제공 너무 종류가 많다. (MFC 전체의 절반 규모) COM을 따르지만 안따르기도… Codec Hell 같은 타입의 미디어 파일에 대해 복수개의 codec이 존재가능 지원 툴과 인코딩 코덱의 부재 필터 그래프를 통해서만 인코딩 가능 (GUI 제공 무) 비디오 인코딩 시에 제한된 옵션만 제공(ASF/WMV만 지원) Video For Windows는 GUI 제공 AVI가 많이 쓰이는 이유
Graph Editor DirectShow 기반 개발 = 필터 그래프 조합 Graph Editor 필터들의 연결상태를 보여준다. 자신만의 필터 조합을 만들 수 있다.
무엇이 가능한가? 내가 만든 멀티미디어 플레이어 인터넷에서 재생 중인 파일을 저장 WAV파일을 MP3파일로 변환 DVD 비디오를 DivX로 변환 등등등…
Graph Editor 처음 실행하기 Direct X 8.1 이상 환경 DirectShow SDK없이 실행 가능 (windows media player가 실행된다면) 수업 홈페이지 GraphEditor.zip
미디어 파일 재생(Render) File Render Media File 또는 파일을 끌어다 놓는다 (drag and drop) PLAY(▶) 버튼을 누른다 PLAY
네트워크를 통한 스트리밍 FileRender URL ( asx, asf, mpg, wmv…) mms://cinewelvod.gscdn.com/cinewel_etc/cinezine/low/300_tr_070228.wmv
필터 변환 필터 (Transform Filter) 소스필터(source filter) / 렌더필터(render filter) input pin output pin 필터이름
필터 일반적인 구조 소스필터 변환필터1 변환필터2 렌더필터
여러가지 렌더링 법 렌더링(Rendering): 널 렌더링(Null Rendering) 컴퓨터 그래픽스에서 화면에 표시하는 것 (3차원/2차원) 미디어 파일로 부터 영상/음성을 표현(합성) DirectShow: Filter graph의 구성 널 렌더링(Null Rendering) Null(0)로 부터 Filter Graph를 만드는 것 Render File/Render URL FILE의 Drag and drop
여러가지 렌더링 법 필터 추가 후 렌더링 “필터 추가 후 렌더링” = ‘필터 추가’ + 널 렌더링 GraphInsert Filters FileRender File/Render URL DirectShow FiltetsOverlay Mixer
여러가지 렌더링 법 필터 렌더링 (핀 렌더링) 출력 핀은 pin rendering을 지원한다. GraphInsert FiltersFile Source (Async.) 영상만 나오게 해보자!
필터 그래프 구성법 자동 연결하기 output pin 과 input pin을 연결 자동 완성 audio out pin을 “Default DirectSound Device”에 연결해보자
필터 그래프 구성법 수동 연결
필터 그래프 구성 기술 구성 기술 특징 렌더링 널 렌더링 그래프 에디터가 모든 것을 처리 필터 추가 후 렌더링 특정 필터를 추가 할 경우 사용 필터 렌더링 특정 스트림에 대해서만 재생하고 싶을 경우 사용 연결 자동 연결 직접 연결에 참여하여 필터와 필터를 연결하고 싶을 경우 사용 수동 연결 직접 모든 필터들을 일일이 연결할 경우 사용
WAV 재생
MP3 재생
Midi 재생
MPEG-1 비디오 재생
컴포넌트 구조로서의 특징 다양한 입력
컴포넌트 구조로서의 특징 다양한 포맷
컴포넌트 구조로서의 특징 다양한 출력
DShow로 무엇이 가능할까? 내 손으로 만드는 멀티미디어 플레이어
DShow로 무엇이 가능할까? 인터넷에 있는 MP3 음악을 저장
DShow로 무엇이 가능할까? WAV 파일을 MP3로 변환하여 저장
DShow로 무엇이 가능할까? DVD의 내용을 DivX로 저장
DShow로 무엇이 가능할까? 내 목소리를 MP3음악과 함께 녹음
DShow로 무엇이 가능할까? 내가 만든 필터를 사용해서 미디어 플레이어에서 실행