윈도우에서 FFmpeg을 컴파일하려면 Visual Studio에서 하는 방법과 MinGW의 gcc로 컴파일하는 방법이 있다.

Visual Studio를 사용하는 방법이 쉽다고 되어있는데, 막상 해보니 잘 되지 않고…

윈도우 환경에서 gcc로 컴파일 하려면 MinGWyasm이 필요하다.



1. MinGW 다운 및 설치


MinGW를 설치하려면 여기에서 mingw-get-setup.exe를 다운받아 실행하면 된다.

설치 화면에서 mingw32-basemsys-base를 선택한 뒤에 Installation - Apply Changes를 클릭하면 설치가 진행된다.

설치가 되는 기본 폴더의 위치는 c:\MinGW이다.




2. pr.exe 설치


컴파일할 때 pr.exe가 필요한데, 위에서 설치한 내용에선 이 파일이 빠져있다.

여기에서 다운받아 압축을 푼 뒤에 pr.exe를 c:\MinGW\bin에 복사한다.



3. yasm 다운 및 설치


여기에서 yasm을 다운받는다. win32를 다운받으면 무난히 사용할 수 있다.

다운받은 뒤 파일명을 yasm.exe로 바꾼 뒤에 c:\MinGW\bin에 복사하면 된다.



4. FFmpeg 소스 다운로드 및 컴파일 준비


FFmpeg 소스는 여기서 다운받을 수 있다.

다운받은 뒤에 압축은 c:\MinGW\msys\1.0\home\[계정] 아래에 해제하면 작업이 좀 더 쉽다.



5. unistd.h 수정


c:\MinGW\includeunistd.h가 있다.

여기에 _cdecl가 5번 들어있는데, 이를 모두 __cdecl로 바꿔준다.



6. 컴파일


c:\MinGW\msys\1.0에서 msys.bat를 실행한다.

우선 아래와 같이 입력해서 MinGW 폴더를 마운트한다.


1
mount c:/mingw /mingw


여기서 역슬래쉬(\)가 아니라 슬래쉬(/)임에 유의한다.


그 다음은 소스가 저장된 위치로 이동.

4번에서 설명한 내용대로 했으면 현재 폴더의 아래에 있다.

여기서 아래와 같이 입력하면 컴파일된다. 소요 시간은 대략 30분 안팎.


1
2
3
./configure --target-os=mingw32 --enable-cross-compile --arch=i686 --enable-static
make
make install


이렇게 하면 ffmpeg.exe 등이 만들어진 것을 확인할 수 있다.



참조 사이트: 노녁의 볼우물 #1, #2

 



출처: http://teus.me/308 [TEUS.me]

블로그 이미지

맨오브파워

한계를 뛰어 넘어서..........

,

1단계 : download

1.1 MinGW download : MinGW-5.1.4.exe
[w32api] w32api-3.13-mingw32-dev.tar.gz
1.2 MSYS download : MSYS-1.0.11-2004.04.30-1.exe
[msys_dll] MSYS-1.0.11-20080821-dll.tar.gz
[bash] bash-3.1-MSYS-1.0.11-1.tar.bz2
[Coreutil] coreutils-5.97-MSYS-1.0.11-snapshot.tar.bz2
[Make] make-3.81-MSYS-1.0.11-2.tar.bz2

1.3 FFMPEG의 source download :
download page
source download ( direct ) 

2단계 : install tool

2.1 MinGW install
- 가급적 “Candidate”를 선택한다.
- “MinGW base tools”과 “MinGW make”은 꼭 선택한다.
- (예시) C:\MinGW에 Install한다.
2.2 w32api를 압축을 풀어 MinGW에  overwrite한다.
2.3 MSYS install
- (예시) MSYS를 C:\msys\1.0에 install한다.
- 그 후 script창이 나타난다.
: Do you wish to continue with the post install? [yn ] -> y
Do you have MinGW installed? [yn ] -> y
Where is your MinGW installation? -> C:/mingw
2.4 msys_dll을 install한다. ( Msys에 overwrite)
: 모든 file을  overwrite
2.5 bash를 c:\msys\1.0에 압축을 풀어 놓는다.
: sh.exe
2.6 coreutil을 c:\msys\1.0에 압축을 풀어 놓는다.
: pr.exe, du.exe, kill.exe을 대체해야 한다.
2.7 make를 c:\msys\1.0에 압축을 풀어 놓는다.
: make.exe를 대체한다.
2.8 msys.bat를 수정한다.
: c:\msys\msys.bat를 열어 첫머리에
call “C:\Program Files\Microsoft Visual Studio 8\VC\bin\vcvars32.bat”

3단계 : FFMpeg statically build

3.1 : 시작 메뉴->Programs->MinGW->MSys->msys를 실행한다.
3.2 : command 창에서
cd /C/work/ffmpeg
: folder 이동
./configure –enable-memalign-hack –extra-cflags=”-fno-common”
: configure 실행 ( 좀 걸림 )
make
: make 실행 ( 꽤 걸림 )
ffmpeg.exe 생성
make install
: make install 실행
: c:\msys\1.0\local\bin\ffmpeg.exe에 copy되어진다.

(참고로 특정 Codec만 Compile하고 싶을 경우의 예제)
./configure –disable-encoders –disable-muxers –disable-parsers –disable-decoders –disable-demuxers –enable-shared –enable-libfaad –enable-gpl –enable-pp –enable-parser=h264 –enable-decoder=h264 –enable-demuxer=h264 –enable-parser=aac –enable-demuxer=aac –enable-decoder=libfaad –enable-parser=mpeg4video –enable-parser=mpegaudio –enable-parser=mpegvideo –enable-demuxer=mpegps

 

4단계 : FFMpeg dll version build
4.1 : 시작 메뉴->Programs->MinGW->MSys->msys를 실행한다.
4.2 : command 창에서
cd /C/work/ffmpeg
: folder 이동
make distclean
: 이전의 중간 file을 제거함.
./configure –enable-shared –disable-static –enable-memalign-hack –extra-cflags=”-fno-common”
: configure 실행 ( 좀 걸림 )
make
: make 실행 ( 꽤 걸림 )
ffmpeg.exe 생성
make install
: make install 실행
: c:\msys\1.0\local\bin\ffmpeg.exe에 copy되어진다.
: dll도 C:\msys\1.0\local\bin\에 copy되어진다.

5단계 : MSVC에서 사용하기 위해서 Shared Dll을 Compile할 경우
5.1 : Visual Studio의 command창을 띄운다음.
5.2 : cd -> c:\msys\1.0\
5.3 : msys.bat 실행 후 4단계를 반복한다.

6단계 : MSVC에서 환경 설정
6.1 : Shared Library경우

 

6.2 : Static Library경우

6.3 : Example 1

6.4 : Example 2

※ 참조 URL

http://www.mingw.org/
http://sourceforge.net/projects/mingw/
http://www.ffmpeg.org/
http://www.inb.uni-luebeck.de/~boehme/using_libavcodec.html
http://ffmpeg.arrozcru.org/wiki/index.php?title=Main_Page

블로그 이미지

맨오브파워

한계를 뛰어 넘어서..........

,

1. MinGW 설치

Minimalist GNU for Windows

윈도우 환경에서 GNU 컴파일 환경을 구성해 준다.(cross compile)

http://sourceforge.net/projects/mingw/files/ 에서 설치파일을 다운 받고 설치한다.

설치 옵션 중 C Compiler, C++ Compiler, MSYS Basic System, MinGW Developer Toolkit을 필수로 체크.

설치경로는 원하는 곳 아무데나.

 

2. yasm Assembler 설치

asm 컴파일러로 MinGW 시스템에 lilbrary형태로 설치한다.

http://yasm.tortall.net/Download.html 여기서 시스템에 맞는 exe파일을 다운받는다.

ex) 시스템이 64bit windows라면 Win64.exe 다운

이름을 yasm.exe로 변경하고 MinGW설치 폴더(C:\MinGW\msys\1.0\bin) 위치에 설치(복사)

 

3. nasm 설치

yasm과 마찬가지로 asm 컴파일러

http://www.nasm.us/pub/nasm/releasebuilds/2.10rc8/win32/ 에서 zip파일을 다운받고 압축을 푼다.

압축을 푼 파일에서 nasm.exe 파일과 ndisasm.exe 파일을 MinGW설치 폴더(C:\MinGW\msys\1.0\bin) 위치에 설치(복사)

 

4. pthread library 설치

ftp://sourceware.org/pub/pthreads-win32 에서 pthreads-w32-2-8-0-release.tar.gz 버전을 다운받는다.

압축을 풀고 적당한 폴더명으로 MinGW설치 폴더의 사용자 폴더(사용자 명)에 압축을 푼다.

ex)C:\MinGW\msys\1.0\home\사용자 명\pthread

MinGW shell을 실행한다. (시작-프로그램-MinGW-MinGW Shell 실행)

실행 했을때 시작 위치는 내 홈디렉토리(C:\MinGW\msys\1.0\home\사용자 명)다.

앞으로는 모두 여기를 기준으로 설명함.

pthread library 소스가 복사된 위치로 이동.

make clean GC 입력 후 엔터(pthread library를 컴파일 한다.)

다음을 차례로 입력한다. (pthread library를 설치)

cp pthreadGC2.dll /lib

cp pthreadGC2.dll /bin

cp pthreadGC2.dll /lib/pthread.dll

cp pthread.h sched.h /local/include

 

5. x264 빌드

H.264 비디오 인코더 중 하나로 ffmpeg내부에서 외부 라이브러리로 사용된다.

http://www.videolan.org/developers/x264.html 여기서 다운로드 후 압축을 풀고

4번의 pthread 설치와 동일한 방식으로으로 MinGW폴더의 적절한 사용자 폴더에 복사한다.

마찬가지로 MinGW shell에서 설치된 폴더로 이동하여 다음을 차례로 입력한다

./configure --enable-shared --disable-asm (빌드 준비)

make (빌드)

make install (설치)

 

6. SDL 설치

ffplay(플레이어)에서 화면 출력을 위해 필요한 라이브러리.

최종적으로 FFMpeg 빌드 후 ffplay가 생성되지 않는다면 SDL이 제대로 설치됐는지 확인.

http://www.libsdl.org/download-1.2.php 에서 Source Code 항목중 xxx.gz 다운

MinGW의 사용자 폴더에 적절한 이름의 폴더명으로 압축을 풀고 아래를 차례로 실행

./configure

make

make install

 

7. ffmpeg 빌드

여기까지는 준비 단계였고 본격적으로 ffmpeg을 빌드한다.

http://ffmpeg.mplayerhq.hu/download.html 에서 가운데쯤 보이는

FFmpeg Repository Snapshots 링크를 이용해 소스를 다운받는다. (굳이 check out받을 필요는 없음)

4, 5번 과정에서 했던것과 동일하게 MinGW의 사용자 폴더에 적절한 폴더명으로 생성해 복사한다.

마찬가지로 MinGW Shell을 이용해 복사된 폴더로 이동하고, 다음을 차례로 입력한다.

※ ./configure 명령에서 많은 옵션을 줄 수 있다.(코덱 추가/제거 등..) 사용가능한 옵션은 ./configure /help 로 확인

./configure --enable-shared --enable-static --enable-swscale --target-os=mingw32 --enable-gpl --enable-pthreads --enable-libx264 --extra-cflags="-I/local/include" --extra-ldflags="-L/local/lib" --enable-memalign-hack (빌드 준비, 5분 정도 소요됨)

make (빌드, 10분 정도 소요됨)

make install (설치)

 

7. 참고

http://shawnpark.tistory.com/26

http://www.cyworld.com/soinho/7810504 (거의 여기 내용)

http://www.videolan.org/developers/x264.html (x264 관련)

http://ffmpeg.mplayerhq.hu/index.html (ffmpeg 공식 사이트)

http://sourceware.org/pthreads-win32/(pthread - win32)

http://www.libsdl.org/ (SDL)

 

블로그 이미지

맨오브파워

한계를 뛰어 넘어서..........

,

0. ffmpeg source export by SVN   svn://svn.ffmpeg.org/ffmpeg/trunk

1. download "MinGW"  http://sourceforge.net/projects/mingw/files/ 

2. MinGW설치     c,c++컴파일러와(c++은 안해도 될듯하지만) MSYS포함

 

3. add Path   환경변수에 추가

C:\MinGW\msys\1.0\bin

C:\MinGW\bin

 

4.http://yasm.tortall.net/Download.html 에서 적당한 yasm을 다운.

C:\MinGW\msys\1.0\bin에 넣는다.

이때 파일의 이름을 yasm.exe로 해준다.

 

5. export한 ffmpeg을 C:\MinGW\msys\1.0로 이동(혹은 복사)

 

6.C:\MinGW\msys\1.0\msys.bat 수정

맨 윗줄에 추가

call "C:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/bin/vcvars32.bat"

 

7.msys.bat 실행

cd /MinGW/msys/1.0/ffmpeg

 

// 컴파일 실패(ffmpeg-1.1.2)

./configure --enable-shared --enable-memalign-hack --extra-cflags=-U__STRICT_ANSI__ 

 

// 컴파일 성공(ffmpeg-1.1.2 : H264만 빼내는 방법)

./configure --disable-doc --enable-shared --disable-static --disable-ffmpeg --disable-ffplay --disable-ffprobe --disable-ffserver --disable-avdevice --disable-encoders --disable-network --disable-protocols --disable-decoders --disable-parsers --enable-decoder=h264 --enable-parser=h264 --disable-filters --disable-yasm --disable-muxers --disable-bsfs --disable-devices --disable-demuxers  --disable-avfilter --disable-swscale --enable-memalign-hack --target-os=mingw32 --extra-cflags=-U__STRICT_ANSI__ --extra-libs=-lpthread

 

make
make install
 
8.C:\MinGW\msys\1.0\local  에 파일 생성되어있음.
 
빌드는 여기까지 완료
 
테스트 컴파일
샘플소스 : ffmpeg\libavcodec\api-example.c
포함,라이브러리 path설정
빌드시 inttype.h없다고 에러
압축풀고 include 폴더안에 넣음
소스들 적당히 수정해주고
common.h에
 
#ifdef __cplusplus
 #define __STDC_CONSTANT_MACROS
 #ifdef _STDINT_H
  #undef _STDINT_H
 #endif
 # include <stdint.h>
#endif
 
추가
 
소스에서 헤더 포함은
extern "C" {
#include "libavcodec/avcodec.h"
#include "libavutil/mathematics.h"
}
으로 수정
 

'멀티미디어 > 코덱(Codec)' 카테고리의 다른 글

FFmpeg을 직접 컴파일 해보자  (0) 2017.04.03
ffmpeg window build 빌드하기  (0) 2014.04.09
FFMpeg windows build  (0) 2013.10.28
블로그 이미지

맨오브파워

한계를 뛰어 넘어서..........

,

해보면 쉽고 안해보면 뭐가 몬지 몰라서 헤메게 되는 Setup 프로젝트 입니다.

VS 에는 클릭원스라는 퍼블리싱도구가 있어서 편리하긴 한데요. 클릭원스는 설치 폴더지정이나 설치 전 후 작업 과정이

어려워서... 셋업 프로젝트를 선택하였습니다.

이번 포스팅에는 Setup 프로젝트를 만들고 msi 파일을 만들어 Setup 파일을 다운받고 설치하고

바탕화면에 바로가기를 만들고, 설치될 폴더를 지정해 주고, 아이콘을 지정하는 등 설치에 관련된 작업을 알아보려 합니다.

작업 환경은 Visual Studio 2008 입니다.

먼저 새 프로젝트를 클릭하고 셋업 프로젝를 만들어 봅시다.

 

 

후에 우리가 배포할 솔루션을 추가해 줍니다.

1. 솔루션 탐색기에서 솔루션 마우스 오른쪽 클릭 -> 추가 -> 기존의프로젝트(우리가 다 만든 프로젝트) 를 클릭합니다.

여기서 잠깐!!!!

2. 우리의 프로젝트솔루션에서 셋업 프로젝트를 추가로 만들수도 있습니다. 뭐가 먼저냐의 문제인데요.

셋업 프로젝트를 만들고, 기존의 프로젝트를 추가 할 경우...

수정시 원본의 프로젝트에 적용이 안된다는 것을 주의하십시오. 아무튼 다 만들었으면 손대지 말란 말이져!!!

그러나 2 의 경우 원본이 달라지지는 않습니다. 따라서 2의방법으로 하는 것을 추천해 드리지만...

저의 경우 3개의 프로젝트가 솔루션에 들어가 있어서 여간 복잡한게 아닙니다..

이런 경우 1 의 방법을 쓰는게 속시원하죠. 지저분한것은 싫어서....

그러면 프로젝트를 추가해 봅시다.

 

 

프로젝트명이랑 폴더명을 지웠는데.. ㅋ 의미가 없으려나?

푸헤헤... 아무튼... 프로젝트가 추가가 되면 다음의 작업들을 살펴 봅시다 ^^

 

 

셋업 프로젝트 마우스 오른쪽 버튼을 클릭하면

1. 파일시스템

2. 레지스트리

3. 파일형식

4. 사용자 인터페이스

5. 사용자 지정 정작업

6. 시작조건

이 있습니다.

파일시스템(File System on Target Machine)에는

기본적으로 3개의 폴더가 표시 됩니다.

Applicaiton Folder

User's Desktop

User's Programs Menu

직관적으로 생각하시는게 맞습니다.

파일시스템은 내가 아닌 사용자의 컴퓨터의 파일시스템이고 -> File System on Target Machine

Application Folder 는 내가 만든 프로그램이 설치될 폴더이며

User's Desktop 은 사용자의 바탕화면이고

User's Programs Menu 는 사용자의 시작 버튼을 눌렀을 때 보여지는 프로그램의 메뉴 입니다.

 

 

파일 시스템에 마우스 오른쪽 버튼을 누르면

Add Special Folder 에 위와 같은 여러가지 특정 폴더를 볼 수 있습니다.

전부를 설명할 수는 없지만 대게 직관적으로 알 수 가 있습니다.

즉... 이 부분에서 우리가 원하는 파일을 어느 폴더에 넣을 지 지정이 가능하다는 말 입니다.

저는 Window 밑에 Program Files 라는 폴더 밑에 설치프로그램을 넣는 것을 좋아하니까....

(사실은 다들 거기 있기에 따라서... ㅎㅎ )

프로그램 파일 폴더를 추가 하겠습니다.

만약 !!

- 아이콘을 window 밑에 system 폴더에 넣고 싶다면 시스템 폴더를 추가해서 아이콘을 넣음 되고,

- 폰트를 window 밑에 font 폴더에 넣고 싶다면 글꼴 폴더를 추가해서 폰트를 추가하면 되고,

- 시작프로그램이 지정되어 있는 사용자 시작폴더에 프로그램을 등록하고 싶으면 그렇게 하면 됩니다.

참~ 쉽죠잉?

그런데 개인적으로 시작프로그램은 레지스트리에 지정하는 것을 좋아라 합니다.

레지스트리 관련 내용에 대해서는 클래스참조를 찾아보세요 ^^

아무튼 다시 돌아가서~ ㅋ

드디어 우리가 만든 프로그램을 프로그램 파일즈 폴더에 넣어 봅시다 !!! 두둥~

 

 

프로그램 파일즈 폴더가 생겼구... --> 우클릭 --> 추가 -->

폴더,

프로젝트 출력,

파일,

어셈블리

중 프로젝트 출력을 클릭합니다.

폴더는 말 그대로 내컴퓨터에 있는 폴더를 통째로 거따 넣자는 것이고,

프로젝트 출력은 Debug 폴더나 Release 폴더의 개고생의 산물(?) 을 의미하는 것이고

파일은 말그대로 파일

어셈블리는 DLL 등의 바이너리 파일을 의미합니다.

우리는 우리가 만든 프로그램을 셋업파일로 만들 것이므로 개고생의 산물인 프로젝트 출력을 클릭합니다.

 

 

게이트웨이 라는 프로젝트가 개고생의 산물이며...

여러가지를 고를 수 있습니다만... 기본 출력을 선택하면 설치파일을 만들 수 있습니다.

아래의 구성에서 디버그, 릴리즈 를 선택할 수 있는데...

특별한 경우가 아니면 디버그는 배포할때 별로....

이유는 다들 아시리라 생각됩니다 ^^ 점점 길어지는 글때문에 지쳐가고 있는.. ㅋ -_-;;

 

 

추가를 했더니 프로그램 파일 폴더에

DLL 파일들과 기본출력 from 프로젝트명 이 추가 되었군요..

몇가지 변경이 별로 없는 클래스 혹은 이유를 말해줄수 없는(굴욕 ㅠㅠ) 등은 DLL 로 만들어 추가했습니다.

이런 클래스 혹은 이런 DLL 은 공개할 예정이니 마음껏 가져다 쓰시길 바랍니다. ㅋㅋㅋ

그리고 msi 파일과 Setup.exe 파일을 지정해 줍시다.

msi 파일은 지정되어 있는 경로의 setup.exe 파일을 찾아서 다운로드 시키고 설치를 도와주는 확장명 입니다.

아래처럼 지정합니다.

 

 

자 이렇게 하고 빌드를 하면 setupProject 의 Debug 폴더에

setup.msi

setup.exe 파일이 생겨납니다.

intallation URL 에 셋업파일의 URL 을 지정한 후 실제로 Setup.exe 파일을 위치시킵니다.

그 다음에 setup.msi 파일을 인터넷에 뿌려대면 끗!!!

자 이제 노력의 산물을 올리는게 되었으니 노력의 산물을 꾸미는 몇가지 기능을 넣어 봅시다.

바탕화면에 바로가기 만들기 !!!!!

 

 

일단 유저스 데스크탑 ( 영타가 귀찮음 ㅠㅠ ) User's Destop 속성을 보시면 Always Create 부분을 True 로 바꾸어 줍니다.

그리고 주의할 점 입니다.

 

 

User's Desktop 우클릭 -> Create Shortcut to User's Desktop 이렇게 하면 바로가기가 만들어지나

프로그램까지 접근이 안됨!!!! T^T 이것때문에 대 프로그래머이신 Arin 상에게 창피 당했음

우리가 원하는 것은 우리가 만든 프로그램의 바로가기 이지 폴더의 바로가기가 아님 !!!

우리가 만든 프로그램의 바로가기를 바탕화면에 넣으려면!!!!

 

 

위의 그림처럼 User's Desktop 영역에 마우스를 우클릭합니다.

그러면 아래와 같은 과정을 거쳐 바탕화면에 우리가 만든 프로그램의 바로가기를 만듭니다.

 

그러면 바로가기가 만들어집니다. ㅋ

업무시간에 포스팅 하다 걸려서 다음 장에서...

프로그램 파일에 등록하는 것과 아이콘 등록하는 것을 계속 하도록 하겠습니다.

블로그 이미지

맨오브파워

한계를 뛰어 넘어서..........

,

블로그 만들고 처음으로 강의성 있는(?) 글을 써보네요,,

게임, 유틸 등을 설치 할 때 파일을 받으면 설치를 시작하는데요

그런 설치 프로그램을 만드는 방법에 대해 글을 써봅니다.

1. 인스톨 팩토리 이용하기

저녀석이 인스톨 팩토리 입니다.

옛날에는 저걸로 설치당하는(?) 일이 많았는데

요즘은 보기 힘들어졌습니다.

이유는 잘 모르겠네요;;

네 바로바로 이게 Install Factory 입니다!

간단합니다. 쉽게쉽게 만들 수 있게 해놨어요,

이정도면 꽤 쉬운 프로그램이죠^^

뭐 그래서 더 이상 말할 것도 없구요,

압축률 : 162MB (169,913,272 바이트) -> 85.9MB (90,148,050 바이트)

다운로드

(출처 : 알 길이 없네요;; edison1111@daum.net , 김종민 님이 만드셧습니다.)

2. Smart Install Maker (스마트 인스톨 메이커) 이용하기

이것도 쉽게 인스톨 프로그램 만드는 프로그램 중 하나입니다.

짠! 이게 스마트 인스톨 메이커입니다.

이것도 쉽게쉽게 만들어놨습니다.

이것도 보기만 해도 바로바로 만들 수 있게 되어 있습니다.

아마 이게 제일 쉬운 듯 합니다.

단점은 적지 않을수 없네요

느려요,,, 정말 느려요

162MB 파일을 설치파일로 만드는데 10분 내외 걸렸습니다.

인스톨팩토리에 비교하면 말을 할 수 없죠,,

압축률 : 162MB (169,913,272 바이트) -> 73.1MB (76,660,349 바이트)

(출처 : http://www.sminstall.com/ )

직접받기

출처사이트에서 받기

클릭

한글패치 받기

(받은 후에 실행 하시구 Smart Install Maker 설치 후 Preferences -> Language -> Korean(한국어) 클릭하시면 됩니다.)

3. NSIS (Nullsoft scriptable Install System) 이용하기

드디어,, 좀 많이 봤던 거네요

제가 얼마 전까지만 해도 찾고 다니던 겁니다.

자세히 보니 아이콘 위에 NSIS 글자가 있었네요,,, ㅠㅠ

설치하고 실행해 봅니다@!

ㅇㅇ???

넌 뭐니..? 영어로 어쩌구 저쩌구 보이는데 검은건 글씨요,,,,

저기서 그냥 ZIP 파일을 설치 파일로 만들고 싶다 하시는 분들은

Installer based on ZIP file 으로 진입하시구요

다른 분들은 자기가 열심히 스크립팅 합시다!

라면 뭐하죠,,,,

NSIS 의 단점이라 하면 자기가 알아서 스크립팅 해야합니다.

Nullsoft 에서 저런 프로그램 꽁짜로 줬는데 뭐라 할 수 없죠.

그런데 HM NIS Edit 라는 프로그램이 NIS 확장자 파일을 쉽게 수정할 수 있게 하면서

스크립트 작성 마법사까지 할 수 있게 해주는군요^^

자자 HM NSI Edit 프로그램을 실행 시킨 후에

왼쪽 위에 형광팬으로 노랗게 칠해진 부분을 클릭합니다.

그러면 이게 뜨는데요

이제 끝난 겁니다^^

위의 2개의 프로그램처럼 설치할 파일을 작성한다던지

바로가기는 뭐로 만들거냐, 언인스톨 기능은 사용할꺼냐,, 어쩌구저쩌구 그러는데요

쉽게쉽게 설정해주시면 됩니다^^

설정 후 저장버튼을 누르셔서 원하는 위치에 저장합니다.

그러면 위처럼 저런 파일이 하나 만들어집니다.

마우스 오른쪽 클릭 후 (Compile NSIS script) 를 클릭하시면

MakeNSISW 프로그램이 켜지면서 중얼중얼 하다보면

띠링 소리와 함께 완료됩니다.. 빠르게요,..

이렇게 말이죠!

만약 중얼중얼 영어로 뜨다가 갑자기 Error 가 뜨면

Error 어쩌구 on line (숫자)

이렇게 뜰겁니다.

그러면 on line (숫자) 있는 게 NSI 파일에 (숫자) 번째 줄에 문제가 있다는 겁니다.

그러면 HM NIS Edit 프로그램으로 그 문제가 있는 줄수에 가서

그 줄을 지우던지 고치던지 하시면 됩니다.

성공하셧다면 설치파일을 가지고 놀면 됩니다^^

압축률 : 162MB (169,913,272 바이트) -> 85.2MB (89,366,825 바이트)

(출처 : http://nsis.sourceforge.net/Main_Page)

직접다운로드

출처 사이트에서 다운로드

클릭

HM NSI Edit

제가 아는 인스톨 프로그램은 여기까지 입니다.

이밖에 WINRAR 를 이용해서 만드는 방법도 있는데

이건 단순히 압축을 푸는 방식인 듯 하구요

Install Shield 도 있는데 이건 유료 프로그램이고 위의것보다 훨씬 복잡하다고 합니다.

NSIS 가 무료 프로그램중 압축률이 가장 좋다고 들었는데

파일 확장자가 달라서 그런지 저는 조금 낮게 나왔네요

그래도 저는 NSIS가 좋습니다^^

자신에게 맞는 프로그램을 선택해서 하시면 됩니다^^

블로그 이미지

맨오브파워

한계를 뛰어 넘어서..........

,

Chapter 06. DVD와 DivX

 1. DVD와 DivX

 DivX가 처음 선보였을 당시에 많은 유저들이 DVD와 혼동을 일으키는 웃지 못할 상황이 있었습니다. 그만큼 기존의 VCD에서는 상상할 수 없었던 화질을 보여주었기 때문입니다. 지금도 DivX를 DVD와 동일시하는 경우를 종종 볼 수 있는데, 이는 엄청난 착각입니다.

 DivX 동영상의 화질은 인코딩시 사용한 프로그램이나 작업 방법 등에 따라 달라지기도 하지만, 근본적으로 원본 화질에 가장 큰 영향을 받습니다. 본래 DivX는 동영상을 다루는 코덱일 뿐이므로, 여러 가지 형태의 동영상을 원본으로해서 작업이 가능합니다. 대부분의 DivX들이 화질이 좋은 것은 원본이 화질 좋은 DVD이기 때문이며, 만약 원본이 화질이 좋지 않은 경우라면 DivX코덱을 사용한다고 해서 절대로 화질이 향상되지는 않습니다. 따라서, 최근에는 DivX라고 하면 아예 DVD를 소스로한 동영상을 지칭하는 것으로 해석되고 있습니다.

♣ 대체로 DVD를 소스로한 DivX동영상을 DVDivX 또는 DVDrip 이라고 부르고 있습니다. ♣

 2. DVD의 구성

 DVD는 Audio_ts와 Video_ts의 2개의 폴더로 구성되는 경우가 많지만, 간혹 다른 폴더들이 더 들어있는 경우도 있습니다. 이중 Audio_ts는 DVD AUDIO에서 사용되는 것으로, 본 매뉴얼에서 다루고자하는 동영상 인코딩과는 관련이 없습니다. (흔히 DVD라면 무조건 영화 등의 동영상을 생각하는 경우가 많은데, DVD 중에는 Audio CD처럼 AUDIO 데이터를 수록하고 있는 것들도 있으며, 이것이 DVD AUDIO가 되겠습니다.)

Video_ts 폴더 내부에는 대체로 다음과 같은 파일들이 존재하며, 파일의 수는 DVD별로 다 다름니다. (아래에서는 vts_01 이 주된 영화파일인 경우입니다만, vts_02, 03, 04... 들 중 어느 파일이 주된 영화파일인지는 DVD마다 다릅니다.)

 vts_01_1.vob  :  동영상 파일(VOB=Video Objects), vts_01_0.vob도 있으나,

                       이건 실제 영화와는 무관합니다.

vts_01_0.ifo    :  자막 및 각종 정보 파일

vts_01_0.bup  :  자막 및 각종 정보의 백업파일

video_ts.ifo    :  2차 자막 및 각종 정보 파일

video_ts.bup  :  2차 자막 및 각종 정보의 백업파일

 VOB 파일은 대체로 mpeg2 형식의 비디오 데이터와 AC3 사운드 데이터를 가지고 있으나 일부 DVD의 경우에는 사운드가 DTS, mpeg2 또는 LPCM 형식으로 되어 있는 것들도 있습니다.

영화 DVD의 경우에는 거의 대부분 AC3 형식의 사운드 데이터를 가지고 있으므로 본 매뉴얼에서는 AC3사운드를 기준으로 설명합니다.

 3. VOB 파일의 추출

 대부분의 DVD는 복제 방지가 되어 있어 컴퓨터에서 그냥 카피를 해서는 복사가 되지 않습니다. 또한, 복사를 한다해도 화면이 정상적으로 나오지 않고 완전히 깨진 상태로 나오게 됩니다.

따라서, 우선 VOB 파일을 추출해 하드 디스크에 복사해 놓아야 DivX 인코딩 작업을 진행할 수 있습니다. 이런 추출과정을 Rip 또는 Ripping 이라고 부릅니다.

♣ DVD의 VOB 파일을 하드 디스크에 복사하지 않고도 할 수 있는 방법이 있긴 하지만, 이 또한 복사방지를 깨고 추출해내야 하기 때문에 컴퓨터의 DVD 드라이브가 아닌 AV용의 DVD플레이어로는 인코딩 작업이 불가능합니다. 또한, 파일을 하드에 복사해두지 않고 인코딩 과정에서 DVD로부터 직접 읽는 방법은 추출이 제대로 되지 않는 경우가 많기 때문에 벼로 잘 쓰이지 않습니다. ♣

 1) 사용되는 기반 프로그램들

 ① DeCSS

 DeCSS는 VOB 추출에 사용되는 프로그램으로는 1세대에 속하는 프로그램입니다만, 현재는 다른 좋은 프로그램들이 많이 나와있기 때문에 쓰이지 않습니다.

 ② VOBDec

 현재도 널리 사용되고 있는 프로그램이며, 본래 DOS용 프로그램이지만 이를 윈도우에서 쉽게 사용할 수 있는 GUI(Graphic User Interface) 프로그램(= 일종의 가이드 프로그램임)을 비롯해 수 많은 관련 프로그램들이 개발되어 있습니다.

 ③ vStrip

 DOS용 프로그램이며, 주로 다른 프로그램으로는 추출할 수 없는 multiangle(예; Matrix)이나 seamless branching(예; T-2 UE)방식으로 인코딩된 DVD의 추출에 사용되어 왔습니다만, 최근에는 SmartRipper 같은 프로그램들이 이런 기능을 지원하기 때문에 거의 사용되고 있지 않습니다.

 2) VOB 추출작업

 ① ForceASPI 의 설치(필요할 경우)

 VOB 파일의 추출 작업을 진행하기 이전에 미리 ForceASPI를 설치해 두는 것이 좋습니다.

이것은 Adaptec ASPI layer를 설치하는 것인데, 만약 이것을 설치하지 않는 경우 이 이후의 작업을 진행할 때 ASPI 에러가 발생될 수 있기 때문입니다.

♣ ASPI 에러가 발생한 후에도 설치 가능하지만 미리 미리 설치해 두는 것이 좋을 것 같습니다. ♣

Windows2000이나, XP의 경우 반드시 설치하셔야 합니다. 물론, Windows98SE 및 NT도 지원합니다.

 아래의 주소에서 프로그램을 다운로드 받은 다음 임의의 폴더에 압축을 풀어 놓습니다.

   http://www.doom9.org/Soft21/SupportUtils/forceaspi17.rar

 시작 -> 실행 버튼을 클릭해 INSTASPI.BAT 파일을 실행합니다.


 
 
② SmartRipper의 이용
 
SmartRipper는 VobDec을 기반으로 하고 있는 프로그램이지만, 필요에 따라 DeCSS Plus 알고리즘도 적용할 수 있습니다. 그간 수많은 Ripping 프로그램들이 있어 왔지만, SmartRipper만큼 기능이 다양한 프로그램이 없기 때문에 현재로서는 가장 널리 사용되는 프로그램입니다.
더구나, 최근에 Upgrade된 버전에서는 vStrip에서나 가능했던, multiangle이나, seamless branching 형식의 DVD도 리핑할 수 있게 되었습니다. 또한, AC3 사운드 데이터 또는 DTS 사운드 데이터까지도 영상과 별도로 추출이 가능합니다.
 
DVD 드라이브에 디스크를 넣고, Smart Ripper 프로그램을 실행하면, DVD의 정보를 분석하는 과정 창이 뜹니다. 분석작업이 종료되면, 바로 아래와 같은 프로그램 실행창이 뜹니다.

 
테스트로 삼은 DVD는 seamless branching 형식으로 제작된 Terminator 2(UE)입니다. 위의 그림에서 빨간색 테두리가 쳐진 부분을 보면, 이 DVD에 포함되어 있는 3종류의 동영상이 나타난 것을 볼 수 있습니다. 이중 Title 3가 2시간 34분 29초로 가장 긴 시간을 가지고 있는 영상이 되겠습니다. 3개의 동영상 중 추출하고자 하는 동영상을 클릭합니다.
♣ 인코딩 작업은 시간이 매우 많이 걸리는 작업이기 때문에, 프로그램의 테스트등을 위해 전체 VOB 파일을 다 인코딩해보는 것은 힘듭니다. 이런 경우에는 Chapter 박스와 Cell 박스에 나열되는 항목 중 한 두 개만 체크해 두면, 그 Chapter나 Cell만 추출되므로 몇 분 짜리 VOB 파일을 추출해 인코딩 작업의 테스트용으로 사용할 수 있습니다. 체크된 동영상의 용량이나 시간은 아래쪽 정보란에 표시됩니다. ♣
SmartRipper의 부가적인 기능은 Stream Processing입니다.

 
위의 그림에서처럼 Stream Processing 메뉴를 선택해 "Enable Stream Processing" 박스를 체크하면 DVD에 포함된 비디오, 오디오 및 자막의 정보가 보여집니다.
이중 필요한 것만을 골라 빼낼 수가 있습니다. 즉 필요한 것만을 골라 빼낼 수가 있습니다. 즉 필요한 스트림(예를 들어 비디오와 오디오)을 체크한 다음 오른쪽의 메뉴에서 Direct stream copy를 선택하면 비디오와 오디오가 합쳐진 동영상 파일로, Demux to extra file을 선택하면 비디오와 오디오가 분리된 각각의 파일로 추출이 가능합니다.
실제로 이런 작업은 다른 프로그램으로도 얼마든지 가능하기 때문에, 필자로서는 이 프로그램에서 이런 기능을 사용하길 권하고 싶지는 않습니다. 그러나, DTS 사운드 (그림에서 SDDS로 표시된 것)를 추출할 수 있는 기능은 오로지 이 프로그램만 가능합니다.
♣ DTS 사운드의 추출은 가능하지만, 이 형식의 파일은 용량이 너무 크고 더욱이 현재까지는 일반적인 프로그램을 사용해 MP3로 재 인코딩해 동영상에 병합시킬 방법이 없습니다. ♣
 
선택이 다 끝났으면, "Start" 버튼을 누릅니다.
아래와 같은 작업창이 뜨고, 작업이 진행됩니다. (여기서는 테스트를 위한 것이므로, 한 개의 Chapter만을 추출해 보았습니다.)

 
 
③ DVD Decrypter의 이용
 
VOB를 추출할 수 있는 또 다른 유틸로는 DVD Decrypter가 있습니다. 이 프로그램은 매우 단순한 인터페이스를 갖추고 있어 다루기 편합니다. 또한, 일부 DVD의 경우에는 Smart Ripper로 추출했을 때 자막부분 분석에 문제가 생기는 경우도 있는데, 이럴 때는 이 프로그램을 사용해 보는 것이 좋겠습니다.
 
DVD를 드라이브에 넣은 상태에서 DVD Decrypter를 실행하면, 아래 그림과 같이 파일들이 나타납니다.

 

Edit 메뉴를 선택하면 Main Movie Files 또는 Select All을 선택할 수 있습니다. 기본적으로는 Main Movie가 디폴트로 선택됩니다만, Select All을 선택하는 것이 좋겠습니다.

 

위의 창에 파일들이 선택된 것이 보이면, 그림에서 표시된 부분에 있는 폴더 아이콘을 클릭해, 추출된 파일들이 저장될 위치를 선택합니다. 마지막으로, 부분을 클릭해 파일을 추출/복사합니다.

 ④ vStrip 이용

 ♣ vStrip은 특수하게 제작된 DVD들의 Ripping에 사용되던 프로그램이지만, 최근에 와서는 앞에서 설명한 Smart Ripper도 vStrip과 마찬가지 기능을 가지고 있으므로, 꼭 vStrip 프로그램을 사용할 필요는 없으며, 오히려 Smart Ripper 쪽이 더 편리합니다. 아래의 내용들은 vStrip 프로그램의 사용법을 소개하는 것일 뿐 현재로서는 이 프로그램을 사용해야할 이유는 없습니다. ♣

 일부 DVD들의 경우에는 한 장의 DVD에 여러 가지 동영상 (감독판, 극장판 등등)을 수록하는 경우가 있습니다. 이런 경우 실제로 각 버전의 모든 동영상 데이터를 따로따로 수록하는 것이 아니라 수록된 여러 개의 동영상 stream 들의 조합 순서를 바꾸는 방법을 쓰고 있습니다. (대표적인 예가 Terminator-2 의 스페셜 에디션이 되겠습니다.)

이런 경우는 예전에 사용되던 일반적인 Rip프로그램을 써서는 원하는 버전만을 추출해 내는 것이 불가능합니다. 이때 사용할 수 있는 프로그램이 바로 이 vStrip입니다. 단지, 이 프로그램은 DOS 용이며 더더우기 GUI 프로그램이 아직까지 없기 때문에(사실 있기는 하지만, 다른 프로그램의 GUI와 병합된 형태라 오히려 불편합니다.) 직접 DOS모드에서 명령어를 입력해야 합니다.

 [ 작업 순서 ]

 A. 우선 윈도우의 메모장을 이용해 DVD의 구성에 따라 vob 파일명을 기록한 txt 파일을 만듭니다. 예를 들어, DVD 드라이브가 e: 이고, 추출하고자 하는 VOB 파일들의 이름이 vts_01_1.vob 부터 vts_01_8.vob 까지라면 다음과 같이 VOB파일의 경로와 이름이 포함된 내용의 "test.txt" 라는 문서 파일을 만듭니다.

 

B. 도스창에서 아래의 명령을 입력합니다. (만약, vstrip.exe 프로그램이 "C:\WINDOWS" 폴더에 위치해 있고, DVD 드라이브가 "e:" 라면)

 C:\WINDOWS>vstrip e:\video_ts\vts_01_1.vob -ie:\video_ts\vts_01_0.ifo

 위의 명령어는 DVD의 ifo 파일에 수록된 스트림 조합 정보를 알아내기 위한 것입니다. 이 명령의 실행결과는 다음과 같습니다.

       Parsing "e:\video_ts\vts_01_0.ifo"...

      0. Length: 02:22:04:195 in 122 cell(s).

      1. Length: 02:51:02:193 in 132 cell(s).

      2. Length: 02:53:67:215 in 131 cell(s).

      3. Length: 00:00:00:213 in 1 cell(s).

      4. Length: 00:00:00:213 in 1 cell(s).

      5. Length: 00:00:32:213 in 5 cell(s)....................

 이 내용은 수록된 동영상의 종류가 5가지 임을 보여주며, 그중 0번은 2시간 22분 4초 정도가 되겠습니다. 이들 동영상 중에 하나를 선택합니다. 0번 동영상을 선택했다고 가정하고

 C. 다음의 명령을 입력해 VOB를 추출합니다.

 C:\WINDOWS>vstrip @c:\AAA\test.txt -ie:\video_ts\vts_01_0.ifo -p0 - $1024 -oc:\dvd\test.vob

 이 명령어가 의미하는 바는 다음과 같습니다.

@ : "C:\AAA\" 폴더에 있는 test.txt 파일을 기준으로 작업한다.

-p0 : 앞에서 분석한 동영상 중 0번 동영상을 추출한다.

$1024 : 추출된 파일을 1024 MB마다 나누어 여러개의 VOB 파일로 한다. 이 기능을 이용하면 VOB 파일 자체를 650MB 공CD에 분할 수록하는 것도 가능합니다. (이 기능은 Smart Ripper에서도 설정만 바꿔주면 가능하지만, 용량도 문제고, 자막을 볼 수도 없으므로 거의 무의미합니다.)

test.vob : 추출된 파일을 "C:\dvd\" 폴더에 test.vob라는 이름으로 저장한다. (파일이 여러 개인 경우 자동으로 번호가 추가된다.)

 D. 추출된 vob 파일들의 이름 고치기

 추출 작업이 끝난 후 추출된 VOB 파일들을 보면 test.vob부터 1,2,3.... 번호가 붙어 있을 것입니다. 이 파일들의 이름을 바꿔주지 않으면 인코딩 과정에서 전체 동영상을 한꺼번에 인코딩 할 수 없습니다. 따라서, 파일 이름들을 vts_01_1.vob, vts_01_2.vob, vts_01_3.vob.... 으로 바꿔 주어야 합니다. 당연히 순서대로 해야죠....

 

내용출처 : Hananet Movie Club CINE   DivX Total Manual V4.2


블로그 이미지

맨오브파워

한계를 뛰어 넘어서..........

,

Chapter 05. 오디오(Audio)

 1. 오디오의 형식

 1) AC3 (돌비 디지탈)

 DVD의 표준 사운드 형식으로 2채널(좌/우) 또는 5.1채널(전방 좌/우/센터, 후방 좌/우, 우퍼)을 기본으로 합니다. DivX 동영상에서는 이런 AC3 파일을 2채널 스테레오 형태인 MP3 파일로 다운믹스해서 용량을 줄이는 방법을 사용해 왔습니다. 그러나, 최근에는 사운드 부분을 강화하려는 경향 때문에 AC3 파일을 그대로 DivX 동영상에 적용하는 방법도 사용되고 있습니다.

AC3 파일을 그대로 사용하는 것이 당연히 음질이 좋겠지만, AC3 파일의 5.1채널 분리를 제대로 감상하기 위해서는 5.1채널 디지탈 사운드를 재생할 수 있는 사운드카드와 스피커 시스템이 필요하기 때문에 이런 시스템을 갖추지 않은 대부분의 사용자들에게는 용량만 너무 크게 만드는 격이 될 것입니다.

또한, 고전 영화들의 경우에는 영화 자체가 Mono 또는 2채널 스테레오로 제작된 경우가 많아 DVD도 그런 형식으로 만들어지는 경우가 대부분입니다. 필자의 생각으로는 이런 경우까지 AC3를 적용하는 것은 좋지 않다고 보여집니다. 하지만, 2채널 스테레오인 AC3라 하더라도 MP3로 다운믹스 한 것 보다는 음질이 좋은 것이 사실이기 때문에 음질을 중요시 한다면 AC3를 고려해 볼만 합니다.

가장 큰 문제는 아무래도 용량인데, AC3를 적용하면서도 원본보다 비트레이트를 줄여 사운드 용량을 줄이는 방법도 있으므로 그런 방법을 고려해 보는 것도 좋을 것입니다.

 2) MP3 (Mpeg Layer 3)

 대체로 DivX 동영상에서 표준적으로 사용되는 형식입니다. 예전에는 CBR 형태로 인코딩 되었으나, 최근에는 VBR 형태로 인코딩되는 경우가 많습니다. 주의할 점 하나는 DVD에서 AC3를 다운믹스해 MP3로 만들 때 사운드 볼륨이 너무 작게 되는 경우가 있기 때문에 인코딩 과정에서 이를 보정(normalizing)해 주어야 하는 경우가 많다는 것입니다.

 3) DivX 오디오

 DivX코덱에는 비디오 코덱 이외에 오디오 코덱도 포함되어 있습니다만, 이 오디오 코덱은 용량은 MP3보다 약간 감소시킬 수 있는 반면에 음질도 많이 떨어지고, 비디오와의 싱크부분에도 문제가 생길 가능성이 크므로, 되도록 사용하지 마시기를 권합니다.

 4) WMA 오디오

 이 오디오 형식은 MS에서 개발한 것입니다. 64kbps의 비트레이트에서는 압축률에 비해서 좋은 음질을 들려주기 때문에 MP3보다 더 좋다고도 합니다만, 그 이상의 비트레이트에서는 MP3보다 용량이나 음질면에서 상대적으로 떨어지는 것으로 알려져 있습니다.

이 오디오 형식도 아주 간혹 사용한 예를 볼 수는 있습니다만, 널리 사용되지는 않고 있습니다.

 5) Ogg Vorbis 오디오

 이 형식은 오디오 및 동영상등 멀티미디어 전반에 관한 공개 코덱 개발용 프로젝트인 Ogg 계획의 일환으로 나온 완전 공개 코덱을 사용하는 것입니다. 이런 오디오 파일은 *.ogg 라는 확장자를 갖습니다.

대체로, MP3와 버금가는 압축률과 성능을 지니고 있다고 평가됩니다만 아직은 생소한 형식이고 Sampling Rate도 44100Hz로 제한되어 있어 널리 사용되고 있지는 않습니다.

 2. 오디오의 Sampling Rate

 오디오의 샘플링 레이트는 48000Hz와 44100Hz의 두 가지 종류가 사용되고 있습니다. 샘플링 레이트는 본래 아날로그 데이터인 사운드 데이터를 디지털화하는 과정에서 1초간을 몇 개의 구간으로 쪼개어 디지털화하는가에 따라 달라집니다. 쉽게 말해 48000Hz는 1초의 시간을 48000번 쪼개어 디지털화한 것이라고 보시면 됩니다. 결국 48000 쪽이 44100 보다 음질이 좋을 것입니다.

 1) 44100Hz

 이 형태는 VCD 및 Audio CD에 사용되는 표준입니다. 대체로 인간의 가청한계를 고려했을 때 이 이 상의 샘플링 레이트는 필요없다고 합니다만, DVD에서는 이 형식을 사용하지 않는 것만 보더라도 48000Hz보다 음질이 떨어지리라는 것은 당연하다고 생각합니다.

 2) 48000Hz

 이 형식은 DVD에서 표준적으로 사용되는 방식입니다. 그러나, 구형 및 일부 저가형 사운드카드에서는 48000Hz의 샘플링 레이트를 제대로 재생하지 못하는 경우가 있고 해서 예전의 DivX에서는 44100Hz만을 고집했었으나, 최근에는 동영상과의 싱크 문제가 발생하는 경우도 있고 해서 48000Hz 그대로 인코딩하는 경우가 더 많은 것 같습니다.

 

내용출처 : Hananet Movie Club CINE   DivX Total Manual V4.2

블로그 이미지

맨오브파워

한계를 뛰어 넘어서..........

,

Chapter 04. DivX 인코딩과 Deinterlacing / IVTC

♣ 앞에서는 DVD의 일반적인 제작/재생 과정에서의 Telecine, Deinterlacing, IVTC 등에 대해 다루었다면,
 지금부터는 DivX 인코딩 작업에서의 Deinterlacing과 IVTC에 대한 기본 원리를 설명합니다. ♣

 1. IVTC와 Deinterlacing 중에서 어떤 것을 선택하는가?

 동영상은 다양한 원본을 이용해 만들어질 수 있습니다. DivX인코딩시 소스로 주로 사용되는 DVD도 그 형식이나 DVD제작시 사용된 소스 및 제작 방식이 천차 만별입니다.

본래는 영화 필름을 원본으로해서 Progressive 방식으로 제작되어야 정상이겠으나, 국내에 유통되는 DVD들 중에는 원본이 도대체 무엇인지조차 가늠하기 힘들 정도로 화질이 조악한 경우도 간혹 있습니다. 또한, 인코딩시 사용되는 프로그램들에 나타나는 정보와 실제 형식이 다른 경우까지도 있습니다. 따라서, 아래에 설명되는 방법들은 어디까지나 기본적인 사항일 뿐 그 활용에 있어서는 많은 변수가 있다고 하겠습니다.

 1) 필름을 소스로 만든 Progressive 형식의 원본인 경우

 ① Progressive NTSC 29.97 fps -> NTSC 23.976 fps

 이 경우에는 원본이 24 fps의 필름으로부터 Telecine 작업을 거쳐 29.97 fps로 만들어진 것이므로, IVTC만 적용하면 24 fps의 원본 필름 상태로 되돌려지게 됩니다. (23.976 fps와 24 fps는 실제로는 같습니다.)

 ② Progressive PAL 25 fps -> PAL 25 fps

 이런 경우는 원본 자체가 24 fps를 25 fps로 속도만 약간 빨리해 만든 것이기 때문에 IVTC 및 Deinterlacing 조작이 전혀 필요 없습니다.

 2) 카메라 촬영 동영상 등의 Interlaced 된 소스로 만든 형식의 원본 경우

 ① Interlaced NTSC 29.97 fps -> NTSC 29.97 fps

 이런 경우에는 원본 자체가 프로그래시브 형식이 아니기 때문에 IVTC로는 잔상을 제거할 수 없습니다. 따라서, Deinterlacing 조작을 통해 잔상을 제거한 프로그래시브 형식으로 바꿀 수 있습니다.

 ② Interlaced NTSC 29.97 fps -> NTSC 23.946 fps

 이렇게 만들려면, Deinterlacing과 IVTC를 둘다 적용해야 합니다만 본래의 IVTC와는 달리 불필요하게 추가된 프레임을 빼내는 것이 아니라 당연히 있어야 정상인 프레임을 빼내게 되기 때문에, 동작이 부자연스러워지는 등의 문제가 발생하기 쉽습니다. 따라서, 별로 바람직하지 않습니다.

 ③ Interlaced PAL 25 fps -> PAL 25 fps

 이런 경우에는 Deinterlacing 작업만 적용하면 됩니다.

 2. IVTC의 방법

 DivX 동영상 인코딩에 관련한 프로그램은 매우 많으므로, IVTC 작업을 수행할 수 있는 방법도 매우 다양합니다. IVTC의 근본적인 원리는 같다고 할 수 있으나, 프로그램별로 작업을 진행하는 알고리즘이나 그 능력이 다 다르므로 작업의 결과는 차이가 있습니다.

또한, 원본 동영상의 상태나 작업시 설정내용 등에 따라 결과물의 질이 달라지기 때문에 어떠한 방법이 가장 좋다고는 말할 수 없습니다.

널리 사용되는 IVTC 방법들은 다음과 같습니다.

 1) DVD2AVI의 Forced Film

 DVD2AVI는 동영상 인코딩 프로그램으로서, 예전에는 이를 이용해 직접 인코딩을 했었으나 인코딩 속도가 너무 느린 관계로 최근에는 보조적인 프로그램으로만 주로 사용되고 있습니다.

이 프로그램의 선택항목 중 Forced Film을 선택하면 IVTC 작업을 수행하게 되며, 가장 널리 사용되는 방법이기도 합니다.

 2) TMPGEnc를 이용한 IVTC

 TMPGEnc는 동영상 인코딩 프로그램이지만, 아주 강력한 IVTC 필터를 자체적으로 가지고 있습니다. 이를 이용해 IVTC 작업을 진행할 수 있습니다.

이 프로그램을 사용하는 잇점은 DVD2AVI와는 달리 수동적인 분석이나 조정이 가능하다는 것입니다만, 작업에 시간이 많이 소요되는 단점이 있습니다.

 3) VirtualDub 또는 NanDub의 IVTC 필터 사용

 동영상 인코딩 및 편집에 사용되는 VirtualDub 또는 NanDub 프로그램에 적용할 수 있는 IVTC 필터들이 개발되어 있습니다. 이를 이용해도 IVTC 작업을 진행할 수 있습니다. 하지만 널리 사용되지는 않는 방법입니다.

 4) AVISynth용 IVTC 플러그인의 사용

 AVISynth는 동영상 인코딩시 보조 프로그램으로 사용되며, 이 프로그램에 적용되는 IVTC 플러그인이 개발되어 있습니다. 이를 사용한 IVTC 방법도 최근에 점점 사용이 늘고 있는 추세입니다.

 5) FlaskMpeg을 사용하는 방법

 FlaskMpeg은 사용이 쉬워 초보자들이 많이 사용하는 프로그램으로, 이 프로그램의 설정항목 중에도 프레임수를 바꾸어 인코딩할 수 있는 일종의  IVTC 기능이 있습니다.

 3. Deinterlacing 방법

 Deinterlacing 방법은 IVTC와 마찬가지로 위에서 설명된 모든 프로그램이 공통적으로 가지고 있는 기능입니다. 하지만, DVD2AVI나 TMPGEnc의 Deinterlacing 기능은 거의 사용되지 않고 있습니다.

 내용출처 : Hananet Movie Club CINE   DivX Total Manual V4.2


'멀티미디어 > 일반 자료' 카테고리의 다른 글

Chapter 06. DVD와 DivX  (0) 2009.03.18
Chapter 05. 오디오(Audio)  (0) 2009.03.18
Chapter 03. Telecine & IVTC  (0) 2009.03.18
Chapter 02. 동영상의 압축원리  (0) 2009.03.18
Chapter 01. 프레임(Frame)  (0) 2009.03.18
블로그 이미지

맨오브파워

한계를 뛰어 넘어서..........

,

Chapter 03. Telecine & IVTC

 ♣ 이 부분의 내용은 매우 복잡하게 생각되실 수도 있습니다만, 그리 복잡한 것은 아닙니다. 또한, 이 부분의 이해가 선행되지 않고는 깨끗한 동영상을 만들어내기 어렵습니다. ♣

 1. 개요

 1) Telecine

 영화 필름을 VHS, VCD, DVD 등의 매체용 동영상으로 변환하는 과정을 Telecine 라고 합니다.

보통 Telecine 라고 하면 24 fps 인 영화 영상을 30 fps(29.97 fps)로 프레임수를 늘리는 것을 지칭하는 말로 사용되고도 있으나, 엄밀하게는 프레임수를 늘리는 것을 뜻하는 것은 아닙니다.

하지만, 우리나라나 미국에서 사용되는 NTSC방식의 표준 프레임수가 30 fps 이기 때문에 영화의 24 fps 와는 맞지 않고, 따라서 Telecine 과정에서는 프레임수의 증가 작업이 수반되어야 하는 것은 당연하다 하겠습니다.

 2) Interlacing 과 Progressive 모드

 우리가 접하는 일반적인 TV의 화면은 Interlacing 방식으로 화면을 보여줍니다. Interlacing 방식이란 화면 주사선이 왼쪽 맨 위의 픽셀에서부터 오른쪽으로 주사를 해 갈 때 수평 라인들을 한 줄 씩 건너 뛰어 가면서 주사하는 방식을 말합니다. (비월주사 방식이라 합니다.)

TV 화면과는 달리 컴퓨터의 모니터는 Progressive 방식을 사용합니다. (일부 허접한 모니터들을 제외하고...) 프로그레시브 방식은 수평 라인을 한칸씩 건너뛰지 않고 매 라인을 주사하는 방식입니다. (순차주사방식이라 합니다.)

이를 그림으로 표현하자면 아래와 같습니다.

그림에서 보는 것처럼 Interlacing 방식은 화면의 수평 라인 중 홀수 라인을 먼저 주사한 다음 다시 짝수 라인을 주사하는 방식으로 하나의 화면을 이루게 되기 때문에, 결국 하나의 화면이 2개의 필드로 구성되어지게 됩니다. 프로그레시브 방식은 매 수평 라인을 차례로 주사하기 때문에 필드라는 개념 자체가 없습니다.
 
3) 방송 방식 (NTSC, PAL, SECAM)
 
DVD, VHS, VCD 등은 모두 TV를 통해 시청하는 것을 기본으로 제작되고 있습니다. 또한, TV의 방식 자체가 각 국가별로 다르기 때문에 DVD 등도 판매국가에 따라 그 방식이 상이하기 때문에 TV 방송 방식에 대해서 약간의 이해는 필요합니다.
 
① NTSC
 
NTSC는 미국의 National Television System Committee의 약자로서 1953년 12월에 제정된 컬러TV 방송방식의 명칭으로도 사용됩니다. 수평 주사선은 525 라인이지만, 이중 487 라인만 실제 화면에 사용되며 나머지는 기타 정보를 담게 됩니다. NTSC방식은 흑백 TV와의 양립성을 유지하기 위해 휘도 신호에 색정보를 사람의 시각에 맞춰 교묘히 삽입함과 동시에 전송하는 것으로서 회로가 간단하여 TV수상기 가격이 저렴한 이점이 있습니다. NTSC방식의 특색은 인간의 눈이 미소면적에 대해서는 색체를 거의 느끼지 못하는 점을 이용하여, 비교적 큰 면적의 신호(약 500KHz)는 3원색을 충실히 전송하고, 중면적의 신호(500kHz ~ 1.5MHz)에 대해서는 색채의 포화도를 낮게, 휘도(輝度)는 정확히 전송하며, 미소면적의 신호(1.5MHz 이상)에 대해서는 휘도 신호만을 전송하는 생략법을 실시하고 있는 점인데, 이에 따른 재현(再現) 화상의 색채상의 불편은 일어나지 않는다고 합니다만, 색채가 정밀하게 제대로 표현되지 않는 것은 사실입니다.
♣ 단순히 말한다면, NTSC는 색상부분을 대충 표현함으로써 데이터량을 줄였다고 보시면 됩니다.
 
그러나 NTSC방식은 고도의 대역압축을 위해서 전송회로의 고성능이 요구되므로 이것의 개량형으로서, 독인은 PAL(Phase Alternation Line) 방식을 제안하였으며 프랑스는 SECAM(Squential Couleur Memoire) 방식을 제안하였습니다. 수차례에 걸친 국제회의에서 컬러 텔레비전 표준방식의 국제적 통일이 계획되었으나 실현되지 못하고, 1967년 가을부터 독일, 영국은 PAL방식, 프랑스,소련은 SECAM방식으로 컬러텔레비전 방송을 개시하였습니다.
 
② PAL
 
PALPhase Alternation by Line의 약자로서 독일에서 개발된 컬러TV 방송방식입니다.
NTSC방식과 비슷하지만 색(色)신호를 취급하는 방법에 차이가 있으며, NTSC방식에 비해 신호전송계에 따른 색변형이 적고 방송설비에 고도의 규격이 필요없다는 이점이 있습니다. 그리고 초당 25프레임을 갖는 방송방식으로 NTSC(초당 30프레임)보다 프레임에서 뒤지지만 수평 주사선이 625라인(이중 576 라인만 실제 화면에 사용됨)으로 더 많고 더 높은 대역폭을 사용하기 때문에 해상도가 높습니다. 하지만, 수상기가 NTSC방식에 비해 다소 비쌉니다.
 
③ SECAM
 
SECAMSEquential Couleur A Memoire의 약자로서 프랑스가 개발한 컬러TV방식입니다.
이 방식의 특징은 2가지 색도신호를 NTSC 및 PAL방식의 경우과 같이 동시에 보내지 않고 연속적으로 보내는 것입니다. 즉, 휘도신호를 1 Field 보내고, 색차신호를 1 Field 보내 1 Frame을 구성합니다. 그로 인해, 송신장치나 수상기의 회로가 복잡하여 TV수상기 가격이 가장 비싸고 시청범위가 좁다는 결함이 있으며 흑백 TV로서는 전혀 시청할 수 없다는 결점이 있습니다. 수평 주사선은 625라인으로 PAL방식과 동일합니다.
 
④ 각 방식별 사용국가

 
2. NTSC와 PAL에서의 Telecine
 
1) 3:2 Pulldown (NTSC)
 
DVD는 기본적으로 TV로 감상하는 것을 생각해 제작됩니다. 또한, NTSC방식의 TV는 기본적으로 30 fps의 프레임레이트를 가집니다. 여기에는 가정용 전기의 표준 주파수가 60Hz 라는 데 근본적인 이유가 있습니다.
TV는 Interlace 방식으로 화면을 주사하므로 화면의 수평 라인 중 홀수 라인과 짝수 라인을 각각 주사해야 하나의 화면이 만들어집니다. 결국 하나의 화면이 2개의 필드로 나뉘어지게 되며, 필드의 주사 주기가 60Hz(초당 60회)가 되므로 온전한 화면의 frame rate는 30 fps가 되게 됩니다.
흑백 TV 시대에는 30 fps가 표준으로 사용되었으나, 컬러 TV로 넘어오면서 여러 가지 기술적 문제로 인해 프레임 레이트가 약간 줄어들어 30 fps가 아닌 29.97 fps로 바뀌게 되었습니다. 그러나, 그 본질은 30 fps와 동일하다 하겠습니다.
 
영화 필름은 24 fps의 프레임 레이트를 가지며, TV는 30 fps 이므로, 영화 필름을 TV용 동영상으로 바꾸기 위해서는 프레임 수를 늘려주어야 합니다. 이런 프레임수 증가를 위해 사용되는 방법이 3:2 Pulldown입니다.
 

영화 필름 중 4개의 화면을 기준으로 설명하자면 아래와 같은 원리입니다.

위의 그림에서 보듯이, 우선 영화 필름 4 프레임을 10개의 필드로 분할합니다. 이때 T는 Top Field를 B는 Bottom Field를 뜻합니다. Tr 또는 Br은 Top 또는 Bottom Field가 다시 한번 반복되는 것을 뜻하는 데 이는 프레임수를 늘리기 위한 것으로 실제 필드가 삽입되는 것은 아니고, 필드의 반복에 대한 순서 정보만 입력될 뿐입니다.
또한, Top Field가 아닌 Bottom Field가 먼저 나오는 경우가 있는 이유는 필드의 순서는 반드시 Top과 Bottom이 반복되어야 하기 때문에, 앞 프레임의 필드가 Top으로 끝난 경우에는 그 다음 프레임의 처음 필드는 Bottom Field가 되는 것입니다.
그림에서 보듯이 각각의 프레임을 3개, 2개, 3개, 2개의 순서로 필드로 쪼개어 5프레임을 만들기 때문에 3:2 Pulldown 이라고 부릅니다. (필드의 분해 순서에 따라서는 2개, 3개, 2개, 3개... 식으로 할 수도 있기 때문에 2:3 Pulldown 이라 불리기도 합니다.)
 
이 과정에서 가장 문제가 되는 것은 그림에서 빨간색 박스 안에 있는 2개의 프레임입니다. 이것들은 원본과는 다른 상태 즉, 원본 중 2개의 프레임이 섞여 있는 상태가 됩니다.
이런 프레임은 Interlace 방식으로 주사되는 TV화면에서는 별 문제가 되지 않지만, Progressive 방식으로 주사되는 PC 모니터 화면에서는 2 화면이 겹쳐진 듯이 보여지기 때문에 잔상이 생기는 등의 문제가 발생됩니다. 따라서, PC상에서 구동되는 DVD 재생 프로그램들은 이런 잔상을 없애기 위한 기능들을 가지고 있습니다.
 
2) 2:2 Pulldown (PAL)
 
PAL방식은 25 fps 의 프레임 레이트를 갖습니다. 따라서, 영화 필름의 24 fps와 큰 차이가 나지 않기 때문에 NTSC에서처럼 억지로 프레임수를 늘리는 방식은 사용되지 않습니다.
단순히 1프레임을 2개의 필드로 나누고, 이를 다시 합해 하나의 프레임을 형성하는 방법이 사용됩니다. 결국 추가되는 프레임이 없으므로 영화 필름의 24 fps를 TV에서는 25 fps로 재생하는 꼴이 되기 때문에 원본 보다는 동영상의 재생 속도가 4% 정도 빨라지게 됩니다. 이는 120분짜리 영화를 기준으로 했을 때 PAL방식에서는 115분 정도의 재생시간이 되는 격입니다.
이렇게 동영상의 재생속도가 빨라지면 사운드와의 싱크가 맞지 않게 되는데 이런 현상은 사운드의 재생속도를 4% 증가시켜(피치를 높여) 보정하고 있습니다.
 
비록 재생속도는 원래의 영상과 약간 차이가 나지만 PAL방식에는 억지로 끼워넣은 프레임이 없기 때문에 원본에 충실한 화면을 얻을 수 있게 됩니다. DivX 인코딩이라는 측면에서 본다면 NTSC방식의 소스보다는 PAL방식 쪽이 훨씬 좋다고 하겠습니다.
 
3. IVTC (Inverse Telecine)
 
앞서 설명한 것처럼 영화 필름을 Telecine 했다면, 이렇게 Telecine 된 동영상을 본래의 상태(즉, 24 fps 상태)로 되돌리는 과정을 inverse telecine 라 합니다.
DivX는 본래 PC 모니터 상에서 재생되는 것을 기본으로 하며, 따라서, Progressive 방식의 출력을 기본으로 합니다. 따라서, DivX 인코딩에서는 원본 영화 필름처럼 완전한 화면으로 되돌리는 과정이 필요합니다.
그러나, 이 IVTC 과정은 VHS, VCD, DVD 등의 동영상을 영사 가능한 필름 상태로 다시 만드는 과정은 아닙니다. VHS 등의 동영상을 필름으로 옮기는 작업은 키네스코프(Kinescope)라 합니다. (키네스코프를 보통 키네르코 또는 키네코라고 부릅니다.)
 
4. Deinterlacing
 
DVD에 수록된 mpeg2 동영상은 기본적으로 TV의 Interlacing 모드 출력을 목적으로 하지만, 실제로는 PC 모니터를 비롯한 Progressive 모드에서도 재생이 가능하도록 하는 어정쩡한 형태를 취하고 있습니다. Interlacing 형식으로 제작된 DVD를 PC 환경에서 재생하기 위해서는 Interlacing 형식으로 된 것을 Progressive 형식으로 바꾸는 조작이 필요하며, 2개의 필드로 나뉘어 저장되어 있는 하나의 화면을 모니터로 출력하기 직전에 합쳐서 하나의 화면으로 뿌려주게 되는데 이를 Deinterlacing 이라 합니다. DVD를 재생할 때 적용되는 Deinterlacing 에는 대체로 2가지 방법이 주로 사용됩니다. 물론, 이런 방법들은 WinDVD, PowerDVD 같은 재생 프로그램들을 구동할 때 옵션으로 선택해 줄 수 있습니다.
 
1) Weave
 
이 방법은 2개로 나뉘어진 필드를 하나로 묶어주는 방법입니다. 즉, Top 필드 사이사이에 Bottom 필드를 끼워넣어 하나의 완전한 화면을 만드는 방식입니다.
가장 상식적인 방법이긴 하지만, 한 가지 문제점이 있습니다. 즉, DVD의 원본 소스 자체가 Progressive 형태(영화 필름)인 경우에는 이 방법이 화질이 좋지만, 일부 DVD는 원본 소스 자체가 Progressive 가 아닌 Interlaced 형식(방송용 동영상)인 경우가 있습니다. 이런 경우에는 움직임이 없는 영상일 때는 문제가 없지만 움직임이 많은 동영상의 경우에는 수평방향으로 미세한 흰색 줄모양의 잔상이 나타나 화면이 좋지 못하게 됩니다.(이런 현상을 motion artifacts 라 합니다.)
 
2) BOB (Line Doubling)
 
Weave 방식의 motion artifacts 문제점을 해결하기 위해서 고안한 방법이 BOB 방식으로 각 필드의 화면을 수직으로 2배로 확대한 후 (Line Doubling) 그대로 재생합니다. 이렇게 되면 실제로는 30 fps가 아닌 60 fps 가 되는 꼴이며, 화면 사이사이에 보이는 투명한 가로줄이 나타나는 현상은 피할 수 있지만 엄밀히 말해 수직해상도가 반으로 줄어들게 되는 것입니다. 그러나, 해상도가 낮은 일반 TV에서는 그 해상도의 차이가 미세하기 때문에 감상하는 데 큰 무리가 없으며, PC 모니터에서도 눈에 거슬릴 정도의 화질 저하는 없습니다. 하지만, Weave 방식보다는 화질이 저하되는 것은 당연합니다. BOB 기능이 좋은 경우에는 line doubler는 위아래 라인을 합성한 새로운 라인을 만들기 위해 interpolation을 이용하기도 합니다.
 
3) Field adaptive deinterlacing
 
이 방법은 3개 이상의 필드에 걸쳐있는 각각의 픽셀을 검색하여 선택적으로 그림의 특정 부분을 BOB 또는 Weave 합니다. 이 방법은 고가의 고성능 DVD 시스템에서 제공되는 기능으로, DivX 인코딩 작업에 사용되는 프로그램 중에도 이런 기능을 가지고 있는 것이 있기는 합니다만 제대로 된 기능은 발휘하지 못합니다.
 
4) Motion adaptive deinterlacing
 
이 방법은 MPEG-2 모션 벡터(motion vector)를 검색하고 움직이는 물체의 대규모 이미지 프로세싱을 통하여 그림의 특정 부분을 BOB 또는 Weave 합니다. 이런 기능을 제공하는 DVD 시스템은 엄청난 고가격대의 것들입니다. 물론, DivX 인코딩 과정 중에 사용되는 프로그램들도 이런 기능을 가지고 있는 것도 있습니다. 하지만, 역시 만족할만한 수준은 절대 아닙니다.
 

내용출처 : Hananet Movie Club CINE   DivX Total Manual V4.2

블로그 이미지

맨오브파워

한계를 뛰어 넘어서..........

,