그래프에디트 ( 혹은 그래프에디터 ) 의 각 메뉴들을 대강 정리해 보겠습니다. File ( 파일 ), Edit ( 편집 ), View ( 보기 ), Graph ( 그래프 ), About ( 프로그램 정보 ) 등의 5개 메뉴로 나뉩니다.

1. File


New
Open Graph (.GRF)...
Save Graph
Save As Graph (.GRF)...
Save As XML...

동영상 파일에 알맞은 필터그래프를 구성한 후, 그 구성정보를 저장하고 불러올 수 있습니다. 확장자는 *.grf 입니다. XML ( Extensible Markup Language ) 과 호환되는 형태로도 저장할 수 있는데, 아마도 이 메뉴들은 개발자들을 위한 것이 아닌가 싶습니다.

그냥 동영상 재생만 관심있으신 분들은 혹시라도 잘 재생되던 파일이 문제가 생겼을 때, 이전에 저장한 GRF 파일이나 다른 재생이 잘 되는 컴퓨터에서 GRF 파일을 가져오신 후, 비교해 보시면 필터관련 문제인지 아닌지 확인하실 수 있을 것 같습니다. ^^;;

Render Media File...
Render URL...

" Render Media File... " 로 동영상 파일을 불러올 수 있습니다. 기본값이 " Connect Intelligent " ( 자동 연결 ) 이므로 불러오면 필터그래프가 자동으로 구성됩니다. 그래프에디트 상단의 재생 ( Playback ) 버튼
을 누르시면 새 창이 뜨면서 동영상을 볼 수 있습니다. " Graph " 메뉴의 " Connect Intelligent " 가 체크되어 있지 않으면 소스필터만 덜렁 보여집니다.

" Render URL... " 로는 스트리밍 방송 등을 확인할 수 있습니다. 동영상 방송하는 인터넷 주소를 입력하면 " Render Media File... " 처럼 동작합니다.

테스트할 만한 주소 : http://ccmixter.or.kr/content/bgbg/bgbg_-_.mp3 ( CCMixter )

이 2 기능을 제일 많이 사용하실 것 같습니다. ^^;;

Connect to Remote Graph...
Disconnect from Remote Graph

거의 써 본 적이 없는데, 필터그래프 저장파일을 네트워크나 인터넷 상에서 불러올 수 있도록 하는 기능같습니다. ^^;;

New Performance Log
Save Performance Log
Set Log File...

이것도 거의 써 본 적이 없는데, 아마도 필터들의 성능을 문자 파일 ( 텍스트 파일 ) 형태로 남겨주는 기능이 아닐까 싶습니다. 언제고 활성화시켜 보고 싶다는.. ^^;;

Print...
Print Preview
Print Setup...

프린터로 출력해 주는 기능인데, 별로 사용할 일은 없었습니다. 필터그래프를 종이로 출력하실 수 있습니다. " Print Preview " 로 반드시 출력상태를 확인해 보세요.

그 밖에는 종료메뉴와 마지막으로 불러왔던 동영상 파일에 대한 리스트입니다. 그런데, 이 리스트 잘 안지워집니다. --;;




2. Edit


어디나 있는 편집 기능들입니다. 단지 대상만 필터단위입니다. 필터들을 수동으로 하나씩 연결하실 때 " Disconnect All Pins " 기능으로 먼저 다 연결 ( Connect ) 을 끊으신 후에 작업하시면 됩니다.




3. View


Toolbar
Status Bar

" Toolbar " ( 툴바, 도구막대 ) 는 그래프에디트 창의 상단에 자리잡고 있으며 보이거나 감춰줍니다.



" Status Bar " ( 상태표시줄 ) 은 그래프에디트 창의 제일 아래 자리잡고 있으며, 보이거나 감춰줍니다. 마우스 포인터가 가리키는 위치나 현재 화면이 변할 때 간단한 안내문이 보여지므로 자주 봐 줄 필요가 있는 곳입니다. ^^;;



Enable Seek Bar

" Seek Bar " ( 탐색바, 위치탐색 스크롤바 ) 는 그래프에디트 창의 위쪽에 있으며, 재생 중 위치이동이 가능하게 하거나 불가능하게 합니다.




Auto Arrange
Refresh
" Auto Arrange " 는 필터그래프를 사람들이 보기 좋게 정렬해 줍니다. 체크해제하고 동영상 파일을 불러올 경우, 필터들이 뭉쳐져서 보기 힘듭니다. 이리저리 필터들을 옮겼다가도 " Auto Arrange " 가 체크된 상태에서 " Refresh " 를 누르면 다시 보기 좋게 정렬됩니다.

Graph Statistics

필터그래프 매니저의 수행성능을 보여준답니다. ^^;;

View Filter Graph Statistics

GraphEdit measures statistical information about the filter graph manager's performance.
- 발췌 : 그래프에디트. 도움말 ( Help ) 중에서

아래와 같은 창이 뜹니다.



25%
...
100%
-----------------------------
Decrease Zoom Level
Increase Zoom Level

보여지는 필터그래프를 확대하거나 축소하게 해줍니다.




3. Graph


필터그래프와 관련된 주요 메뉴들이 있는 곳입니다.

Insert Filters...

필터그래프에 필터들을 선택적으로 추가할 수 있습니다. 클릭하면 아래와 같은 창이 뜹니다.

무지하게 많죠? --;;


필터이름 앞부분의 ( + ) 표시를 누르면 좀 더 자세한 정보를 보실 수 있습니다.


녹색으로 표시된 부분만 잠깐씩 봐두시면 될 것 같습니다.

괄호로 묶인 긴 숫자들의 나열을 클래스아이디 ( CLSID ) 라고 부르는데, 필터마다 고유하게 부여된 값입니다. 고유하게 부여됐다는 건 다른 것과 구분하기 위해 들어갔다는 뜻이겠지요? ^^;; 

클래스아이디라는 게 있다는 걸 알아두면 좋은 이유는 코덱을 찾을 때 유용하기 때문입니다. 곰플레이어 등의 재생기가 동영상 파일에서 필요한 필터들을 찾을 때 이런 값들을 읽어와서 필터를 로딩시키는 데, 종종 클래스아이디는 읽었는데, 코덱 ( 필터 ) 가 없어 재생하지 못한다는 메시지가 출력될 때가 있습니다.

이때 이 클래스아이디를 화면캡쳐하시는 등의 방법으로 확인하신 후, 구글 등에서 이 클래스 아이디를 그대로 입력해 검색해 보시면 적당한 필터를 찾으실 수 있습니다. ( 곰플레이어의 경우, 플레이어의 상단, 제목표시줄에 보였던 것으로 기억합니다. ^^;; 저의 경우 꽤 쓸만한 방법이었습니다. ^^;; ) 클래스아이디조차 제대로 읽지 못한다면 동영상 파일이 심각하게 손상된 경우일 가능성이 높습니다.

추가적인 설명과 부정확한 부분이 많은 설명이므로 관심있으신 분들은 좀 더 확인해 보시길 부탁드립니다. 단지 동영상 재생에 문제를 자주 겪으시는 분들께 해결방법 중 하나일 수 있어 적어봤습니다. ^^;; 아마 필터 클래스아이디와 클래스관리자의 클래스아이디 어쩌구하는 어려운 말들이 난무할 겁니다. ㅋㅋ 하지만, 클래스아이디를 통해 어떤 쪽의 문제인가를 접근할 수 있다는 점은 일반사용자 분들에게도 도움이 되리라 봅니다. ^^;;

" File Name " 부분은 윈도우즈 시스템의 어떤 파일이 이 필터를 제공하고 있는지 확인하실 수 있습니다. 아주 드물게 이 파일 ( *.dll 등등 ) 이 깨져있는 경우도 있었습니다. 바이러스가 먹은 건지는 알 수 없었습니다만.. ^^;;

" Merit " 라는 중요한 단어도 보입니다. 필터들의 가치를 나타내는 수치인데, 높을수록 재생시 먼저 사용됩니다. 캡쳐된 이미지에 보여지는 0x00200000 은 아주 낮은 편에 속하며, 0x00800000 (32비트입니다. ^^;; ) 이상이면 거의 재생과정에 참여한다고 보시면 됩니다. 실제로 메리트 값을 변경해주는 유틸리티도 있습니다.

클래스아이디, 실제 파일, 메리트 값은 가끔 눈에 익혀 두시는 게 좋습니다. ^^;;

Add Filter To Cache
Enumerate Cached Filters...

자주 사용하는 필터들을 임시저장소에 넣어두고 ( Add Filter To Cache ) 꺼내쓰는 ( Enumerate Cached Filters... ) 기능입니다.
Filter Cache
For dynamic graph building, the filter graph manager maintains a cache of filters. If an application performs a dynamic reconnection, the filter graph manager can cache filters that it removes from the graph. During Intelligent Connect, the filter graph manager tries cached filters first.
- 발췌 : graphedit 도움말

Play
Pause
Stop

재생 ( Playback ), 일시정지, 중지

Use Clock
Connect Intelligent

" Use Clock " 이라는 게 좀 재밌습니다. 이걸 끄고, 그래프에디트에서 동영상을 재생해 보시면 영상과 소리가 다르게 진행되고 다르게 끝나게 되실 겁니다. 동기화되지 않는다고 하죠. 같은 시간에 영상과 소리를 맞춰서 출력하지 못하게 됩니다.

" Clock " 은 참조클럭이니 뭐니 해서 동영상 재생에 매우 중요한 요소 중 하나입니다. 이 클럭을 동영상 재생시에 동기화해야 하는데 여기에도 여러가지 숨은 문제들이 있습니다만 나중에 얘기하도록 하겠습니다.

" Connect Intelligent " 는 필터들을 자동으로 연결해 준다 정도로 이해하시면 될 것 같습니다. 영문에 자신있으신 분은 직접.. ^^;;

http://msdn.microsoft.com/en-us/library/dd390342(VS.85).aspx

Intelligent Connect
In Microsoft® DirectShow®, Intelligent Connect is the mechanism by which the filter graph manager adds intermediate filters when it connects two pins.
- 발췌 : graphedit 도움말



5. Help


Contents

간단한 사용설명서인데, 그다지 도움이 되진 않는군요.

About GraphEdit

그래프에디트 소개창이 뜹니다. " Private " 이라네요. 왜 이 좋은 프로그램을 더이상 개발, 배포하지 않는지 궁금합니다.


WRITTEN BY
리컨
영화를 즐기는 취미를 기록한 블로그입니다.

,

지난 포스팅에서 다이렉트쇼 기반의 멀티미디어 재생과정을 눈으로 확인할 수 있는 프로그램 몇 가지를 소개드렸습니다. 이번에는 그 중 대표적인 그래프에디트에 대해 좀 더 살펴보도록 하겠습니다.

동영상 파일을 드래그해서 회색영역으로 이동시킨 화면


보통은 그래프에디트 ( 실행화일은 graphedit.exe ) 를 실행시킨 후, 윈도우탐색기에서 동영상 파일을 눌러 회색부분에 올려두면 자동으로 위와같은 화면이 출력됩니다. 이건 " Connect Intelligent " 라고 해서 지능적인 연결 혹은 자동 연결 정도로 이해됩니다. 그래프에디트가 자동으로 추천한 필터들로 재생환경으로 만들어주는 것이지요.


왼쪽의 " 우이천(1).avi " 라고 표시한 네모칸이 해당 동영상파일에 대한 소스필터가 로딩됐음을 알려줍니다. 오른쪽에 " AVI Splitter " 이라고 스플리터 필터와 연결되어있습니다.
 


네모칸 ( 필터 ) 양쪽 끝으로 조그만 사각형 홈들이 튀어나와 있는데, 왼쪽에 있는 홈을 " 입력핀 " ( Input Pin ) 이라고 하고, 오른쪽에 2개 있는 핀을 " 출력핀 " ( Output ) 이라고 합니다. 화살표가 동영상 데이타스트림이 흐르는 방향이라고 생각하시면 됩니다.

이 입력핀과 화살표는 수동으로 연결이 가능하며, 방법도 단순합니다. 연결하고자 하는 필터의 입력핀을 정확하게 클릭하신 후, 드래그하면 화살표가 보여지기 시작합니다. 그후 화살표의 검은 삼각형 부분을 다른 필터의 입력핀 ( 돌출된 홈 ) 에 정확히 위치시키면 됩니다. 연결될만한 ( 적당한 ) 필터라면 연결되고 그렇지 않으면 에러메시지를 출력시킵니다. ^^;;

또한, 소스필터 - 스플리터 - 디코더 ( 코덱 ) - 후처리필터 - 렌더러 의 순서대로 연결시켜야 합니다. 중간에 필요없는 것은 지나치셔도 되지만, 디코더의 출력핀에서 스플리터 필터의 입력핀으로 연결은 할 수 없습니다.


왼쪽에 스플리터가 보이고, 여기서 다시 비디오 코덱과 오디오 코덱으로 나눠집니다. 스플리터의 역할이 무엇인지 눈에 확 들어오지요? ^^;;


왼쪽의 비디오, 오디오 코덱 ( 필터 ) 마다 연결된 렌더필터들이 우측에 표시됩니다.

각 필터들은 마우스 포인터로 선택 ( 클릭 ) 한 후, Del 키를 누르거나 " Edit " ( 편집 ) 메뉴의 " Delete " 를 클릭해서 삭제하실 수 있습니다. 새 필터를 넣으시려면 " Graph " 메뉴의 " Insert Filters... " 를 클릭하신 후, 새로 뜬 창에서 골라 삽입 ( Insert ) 하시면 됩니다.

이때는 자동으로 연결되지 않으므로 마지막으로 연결된 필터의 입력핀을 마우스 포인터로 클릭하신 후, 드래그해서 받을 쪽 ( 삽입한 필터 ) 의 왼쪽 홈 ( 입력핀 ) 에 정확히 맞춰주시면 됩니다. 잘못된 필터라면 바로 에러메시지 출력하고 화살표는 사라집니다.




필터그래프 ( Filter graph )

위와 같이 필터들이 어떤 순서로 어떻게 연결되어 있는지 보여주는 모습을 필터그래프 ( Filter Graph ) 라고 합니다.

http://en.wikipedia.org/wiki/Filter_graph

A filter graph in multimedia processing is a directed graph. Edges represent one way data flow and nodes represent a data processing step. The term pins or pads are used to describe the connection point between nodes and edges.
- 발췌 : 위키피디아, Filter graph 중에서

http://msdn.microsoft.com/en-us/library/dd373390(VS.85).aspx

As the diagram shows, each filter is connected to one or more other filters. The connection points are also COM objects, called pins. Filters use pins to move data from one filter the next. The arrows in the diagram show the direction in which the data travels. In DirectShow, a set of filters is called a filter graph.
- 발췌 : MSDN

위키와 MSDN 의 내용이 좀 다르긴 해도 필터그래프가 어떤 의미인지는 이해가 되시리라 봅니다. ^^;;

다이렉트쇼에서는 동영상 재생이 되려면 이 필터그래프를 구성해야 합니다. 소스필터, 스플리터, 디코더 ( 코덱 ), 후처리필터, 렌더러 필터들이 연결 ( Connect ) 되어 데이타스트림 ( 동영상 파일 ) 이 흘러갈 수 있는 구성이라고 보시면 될 것 같습니다.
 
이 필터그래프를 손쉽게 구성하고, 수정할 수 있도록 도와주는 프로그램이 그래프에디트입니다.

혼동하지 말아야 점은 그래프에디트에서 재생이 된다고 해서 그냥 곧바로 동영상 플레이어에서도 재생되는 건 아니라는 점입니다. 여러 이유가 있겠지만, 동영상 플레이어에 내장된 필터들만 사용하도록 설정해 뒀을 경우라든가, 플레이어와 새로운 필터 간에 마찰(?)이 생겼을 수도 있기 때문입니다.

다행이도 제 경험으로는 그래프에디터에서 원활하게 재생된 건 동영상 플레이어의 여러 설정 변경을 통해 거의 재생됐었다는 겁니다. ^^;; 어떤 필터 혹은 디코더 ( 코덱 ) 이 가장 적절한지는 먼저 그래프 에디터를 통해 누구나 실험해 보실 수 있습니다.




 

 

 

 


WRITTEN BY
리컨
영화를 즐기는 취미를 기록한 블로그입니다.

,
그간 윈도우즈 환경에서 다이렉트쇼 기반으로 동영상을 재생할 때 기초적인 과정을 대강 설명드렸습니다.

이제 그 과정을 여러 프로그램을 통해 눈으로 확인해 보겠습니다.
012


1. 그래프에디트 ( GraphEdit )

다이렉트X Software Development Kit ( 이하 DXSDK )라는 개발지원 소프트웨어 묶음 속에 디버깅툴로 들어있던 프로그램입니다. ( 디버깅이란 프로그램을 만든 후에 이상이 있는지 점검하는 과정을 말하며, 이때 사용되는 소프트웨어가 디버깅툴입니다. ^^;; ) DXSDK 8.1 이후로는 더 이상 포함되어 있지 않은데, 빼버린건지 다른 SDK 로 이동한건지는 모르겠습니다. (혹시 모바일 멀티미디어 쪽으로 이동한건지.. ^^;; ) 또한 개별적으로 배포하지 말라는 안내문이 있긴 하지만, 찾아보시면 구하는 건 어렵지 않을 것 같습니다. ^^;; 종종 그래프에디터라고도 불립니다.

http://en.wikipedia.org/wiki/Graphedit

http://msdn.microsoft.com/en-us/library/dd390950(VS.85).aspx

http://msdn.microsoft.com/en-us/library/dd407274(VS.85).aspx


2. 그래프스튜디오 ( Graphstudio )

프리웨어에 소스도 공개되어 있어 프로그램 개발에 관심있으신 분들도 볼 만 할 것 같습니다만, 성능이 다른 프로그램에 비해 좀 불안해 보입니다. 며칠 사용해 본 것이지만요.. ^^;;

http://blog.monogram.sk/janos/tools/monogram-graphstudio/


3. 그래프에디트플러스 ( GraphEditPlus )

30일간 사용할 수 있는 트라이얼 버전 ( 혹은 데모 버전 ) 인데 모양새나 동작하는 건 제일 나아 보입니다. 추가 정보들도 한 화면에서 바로 확인하실 수 있습니다. 재생문제만 해결하시려는 분들은 이게 나아보입니다.

http://www.thedeemon.com/GraphEditPlus/download.html


4. DSGrphtEdit

코드프로젝트 ( The Code Project ) 라는 개발자 커뮤니티인데, 유용한 소스코드들이 많으며, 코드마다 개발자들의 평점이 매겨져 있어 개발에 관심있으신 분들이 좋아하실 것 같습니다.

http://www.codeproject.com/KB/audio-video/dsgraphedit.aspx


대강 정리하자면..

위의 모든 프로그램 ( 혹은 유틸리티 ) 들은 다이렉트쇼 환경에서 멀티미디어 관련 프로그램 ( 예를 들면, 동영상 재생기나 오디오 플레이어 등등 ) 을 개발할 때 도움이 될 수 있도록 개발되었습니다.

하지만, 동영상 재생기를 사용하다 여러 문제에 부딪혔을 때, 일반인들이 사용하기에도 크게 무리가 없어 보입니다. 사용법이나 메뉴들을 천천히 배워두시면 문제가 발생했을 때 천천히 접근해 가실 수 있지 않을까 생각됩니다. ( 제가 알고 있는 메뉴에 대해서는 다음 번에 포스팅하겠습니다. ^^;; 깊이 들어가면 막힌다는.. --;; )

아래는 사용에 관한 간단한 동영상 캡쳐입니다.


** 중간에 작은 창이 하나 떴는데, 재생화면이 캡쳐되지 않네요. 이 부분은 어떻게 캡쳐할 수 있는지 아직 모르겠습니다. 아마 안될지도.. ^^;;

WRITTEN BY
리컨
영화를 즐기는 취미를 기록한 블로그입니다.

,