안녕하십니까? 저는 컴퓨터 응용과학부 98학번 이민호 입니다. 저는 이번 졸업 프로젝트를 김재형 교수님의 지도 하에 강의 제작 및 재생 시스템을 구축 하였습니다.
차례 강의 제작 / 재생 시스템 시스템 개요 동기 , 목적 및 응용 범위 제작 프로그램 구조 재생 프로그램 구조 관련 기술 1 시스템 개요 동기 , 목적 및 응용 범위 제작 프로그램 구조 재생 프로그램 구조 관련 기술 개발 도구 및 참고 도서 시연 및 질문 향후 개선 과제 본 프리젠테이션은 시스템 개요, 동기, 목적 및 응용 제작 프로그램 구조, 재생 프로그램 구조, 관련기술 개발도구 및 참조 그리고 시연 및 질문 마지막으로 향후 개선 과제의 순서로 진행하겠습니다.
강의 제작 강의 재생 시스템 개요 PC screen을 캡쳐 하여 저장 PC microphone을 이용하여 음성 녹음 강의 제작 / 재생 시스템 시스템 개요 2 강의 제작 PC screen을 캡쳐 하여 저장 PC microphone을 이용하여 음성 녹음 마우스 포인터 캡쳐 하여 저장 강의 재생 강의 제작시 저장된 3가지 데이터를 동기화하여 재생 시스템 개요는 크게 강의 제작과 강의 재생으로 나누어 지는데 강의 제작에는 피시 스크린을 캡쳐하여 저장하고 피시 마이크로폰을 이용하여 음성을 녹음합니다. 그리고 마우스 포인터를 캡쳐하여 텍스트 파일로 저장합니다. 강의 재생은 제작 시 저장된 데이터를 동기화 하여 재생하게 됩니다.
screen shot (Lecture Recorder) 강의 제작 / 재생 시스템 screen shot (Lecture Recorder) 3 강의 제작 프로그램 실행시 트레이 상태로 실행 - 그림(1) 강의 종료 후 강의 데이터 생성 - 그림(2) 제작 프로그램의 스크린 샷입니다. 그림1은 제작 프로그램 실행시 트레이로 활성화 되는 모습입니다. 그림 1의 왼쪽 아랫부분을 보시면 트레이로 실행되어 있습니다. 그림2는 강의 종료시 3가지의 파일 형태로 저장되는 것을 볼 수 있습니다. 그림(1) 그림(2)
screen shot (Lecture Player) 강의 제작 / 재생 시스템 screen shot (Lecture Player) 재생 예제 화면 4 재생용 도구 바 마우스 포인터 재생 화면 재생 프로그램의 스크린 샷 입니다. 초록색으로 보이는 부분은 파일 도움말 재생 멈춤 일시정지 그리고 스킵 버튼으로 구성된 재생 도구 바입니다. 맨밑에 스크롤바는 재생 슬라이드 이고 그 옆에는 재생되는 시간을 나타냅니다. 재생화면 내에는 마우스 포인터가 있습니다. 재생 슬라이드 재생시간
제작 동기 응용 분야 동기, 목적 및 응용 범위 학과 수업 중 복습 자료의 필요성 멀티미디어 관련 프로그래밍 기술 습득 강의 제작 / 재생 시스템 동기, 목적 및 응용 범위 제작 동기 학과 수업 중 복습 자료의 필요성 멀티미디어 관련 프로그래밍 기술 습득 응용 분야 응용 프로그램의 영상 매뉴얼 제작 강의 제작 5 이 시스템의 제작 동기는 학과 수업과 세미나 중 자료 백업을 통한 복습의 필요성을 인지하고 멀티미디어 관련 프로그램밍 기술을 습득 하게 되었습니다.
Screen Capture Module Sound Mouse Recorder App Zip Library All Data 강의 제작 / 재생 시스템 제작 프로그램 Screen Capture Module Sound Mouse Recorder App 6 Zip Library All Data LAME Library Sound.wav Zip file 제작 프로그램의 구조도 입니다. 레코더 에플리케이션은 사운드 캡쳐 스크린 캡쳐 마우스 캡쳐 모듈로 구성되고 각각의 캡쳐 파일들은 집 라이브러리를 통해 집파일로 렉쳐 데이터로 저장 되게 됩니다. Lecture file JPEG Library Image Data
Screen Capture Module JPEG File 강의 제작 / 재생 시스템 제작 프로그램 구조(1) Screen Capture Module 7 DDB를 축소샘플링 하여 이전 DDB와 비교 2 Desktop DC를 DDB로 저장 1 DDB 강의 시작/중지 메시지 DDB DIB -> JPEG저장 4 비교결과가 변하면 DDB->DIB변환 3 DIB JPEG File 먼저 스크린 캡쳐 모듈은 강의 시작/중지 메시지에 의해 데스크탑 DC를 DDB로 저장하고 저장된 DDB를 축소 샘플링 하여 이전 DDB와 비교,하여 변화가 있으면 DIB로 변환 후 JPEG파일로 저장하게 됩니다.
음성 처리 모듈 제작 프로그램 구조(2) 1 1 1 강의 제작 / 재생 시스템 Wave File MP3 File 소리 8 음성 캡쳐 1 Wave File MP3 File Sound Source 파일 쓰기 1 MP3 인코딩 음성 처리 모듈은 사용자로 부터 받은 음성을 캡쳐하여 mp3인코딩을 통해 mp3파일로 저장 된다. 1
Mouse Hooking Module a 제작 프로그램 구조(3) 1 2.1 2.2 강의 제작 / 재생 시스템 SetHook / Unhook BeginThread/ AfxEndThread 1 9 강좌 시작/중지 메시지 Mouse Message가 들어올 때마다 메모리 맵에 정보를 저장 2.1 마우스 메시지 Hooking상태 마우스 후킹 알고리즘 입니다. 강좌 시작 및 중지 메시지에 따라 후킹 함수는 스레드를 제어하여 메모리 맵에 있는 마우스 메시지 정보를 매 백미리 세컨즈마다 메모리 맵 정보파일을 텍스트 형식으로 기록 합니다. Thread가 100ms마다 메모리 맵 정보 파일출력 2.2 파일출력
Player App Zip Sound All Data Library Play Module Zip file Viewer 강의 녹화 / 재생 시스템 강의 제작 / 재생 시스템 <<강좌 재생 프로그램>> System 전체 구조 재생 프로그램 Player App Sound Play Module Zip Library All Data 10 Zip file Viewer Module 다음은 재생 프로그램의 구조 입니다. 강의 제작 시 집파일 형태로 저장되어진 3가지중 음성파일은 sound 모듈로 음성 출력하고 저장된 화면정보 마우스 후킹 정보는 뷰어 모듈로 로드 되게 됩니다. Lecture file JPEG Library Image Data
Jpeg VIewer Module 재생 프로그램 구조 (1) 2 1 4 3 강의 제작 / 재생 시스템 DDB DIB Wave Data로부터 현재시간 추출 2 Jpeg File의 리스트를 생성한다 1 강의 시작/중지 메시지 11 DDB DC를 Repaint한다 4 현재 재생시간과 가장 가까운 시간의 Jpeg파일을 DC에 세팅 3 DIB 재생중 강의 시작 중지 메시지에 따라 JPEG의 리스트를 생성하고 wave 데이터로부터 현재 시간과 가장 가까운 시간의 파일을 메모리 DC에 세팅하고 dib는 데스크탑 DC를 리페인트 합니다..
음성 처리 모듈 사용자 조작 1 재생 프로그램 구조 (2) 강의 제작 / 재생 시스템 MP3 File 소리 12 재생 :: MCI Driver 1 소리 사용자로의 mp3파일은 mci를 통해 음성 파일로 출력 됩니다. Mci란 미디어 컨트롤 인터페이스의 약어로서 윈도우 응용프로그램에서 다양한 멀티미디어를 별로의 재생기나 디코더의 설치 없이 사용할수 있도록 윈도우에서 내장 시켜 놓은 일종의 규격이라고 할 수 있습니다. 즉, 윈도우 내부에서 코덱과 같은 역할을 하게 됩니다. MP3 File
Mouse Play Module 재생 프로그램 구조 (3) 1 2 3 강의 제작 / 재생 시스템 Wave Data 현재시간 추출 1 현재시간에 가장 가까운 마우스 정보 추출 2 Wave Data Info 13 마우스 비트맵 위치를 세팅 3 마우스 플레이 모듈은 웨이브 데이터 정보로 부터 추출한 현재시간에 가장 가까운 마우스 정보를 추출하여 마우스 비트맵 위치에 뿌려 줍니다.
관련 기술 음성 정보 – 파일 압축 제작 종료 후 MP3 Encoding 강의 녹화 / 재생 시스템 강의 제작 / 재생 시스템 <<구현된 모듈>> Screen capture (장명우) 관련 기술 음성 정보 – 파일 압축 제작 종료 후 MP3 Encoding mp3 Encoding Library : LAME library 14 Wave File MP3 File MP3 Encoding 관련 기술로서 음성 접보의 압축은 제작 프로그램 종료 후 mp3인코딩을 통해 웨이브 파일을 엠피쓰리 파일로 변환 합니다.
이미지 정보 - 파일 압축 Screen capture (장명우) Jpeg Encoding 800 X 600 해상도 캡쳐 강의 녹화 / 재생 시스템 강의 제작 / 재생 시스템 <<구현된 모듈>> Screen capture (장명우) 이미지 정보 - 파일 압축 Jpeg Encoding 이미지 비교를 통한 중복 최소화 800 X 600 해상도 캡쳐 작은 변화도 감지 10Pxl Per Sampling 15 이미지 정보는 표본 추출을 비교해 변화가 감지되면 jpeg 인코딩을 통해 800 바이 600 해상도를 캡쳐해 저장합니다.
마우스 모션 캡쳐 데이터 파일 패키징 Packing All Lecture File Data Zip ( .Dat) Library 강의 제작 / 재생 시스템 마우스 모션 캡쳐 Global Hooking 메시지 값을 비교하여 변화 - 시간, X Y 좌표 값 저장 마우스 비트맵 이미지 업데이트 데이터 파일 패키징 Zip Library 이용하여 데이터 압축 16 All Data Packing Zip Library Lecture File ( .Dat) 마우스 포인터 캡쳐는 글로벌 후킹을 통해 메시지 값을 비교하여 변화를 감지 하면 시간과 x,y값을 저장해 마우스 비트맵 이미지 업데이트를 하게됩니다.
참고 도서 개발 도구 강의 제작 / 재생 시스템 VISUAL C++ 6 완벽가이드 김용성 저 Visual C++ Programming Bible ver 6.x 이상엽 저 Programming Windows with MFC Second Edition Jeff Prosise 저 17 개발 도구 Microsoft Visual C++ 6.0
강의 제작 / 재생 시스템 시 연 강의 제작 프로그램 실행 메뉴 설명 강의 제작 & 데이터 파일 생성 강의 재생 18
발전 과제 및 소감 강의 제작 / 재생 시스템 브러쉬 기법 및 펜 도구 를 지원 하려 했으나 모든 프로그램이 공유하는 화면에 펜을 유지 시켜야 하는 부분을 해결 하지 못해 아쉬움으로 남았다 프로젝트를 수행하는 동안 MFC, API에 대한 지식을 습득할 수 있게 되었고 앞으로 학교를 떠나서도 이번 개발 과정이 큰 힘이 될 것 같다. 18