[스트리밍] FFMPEG & Mencoder 로 인코딩 서버 구축

인코딩 서버를 구축하기 위해서 필요한것은 코덱들, MENCODER나 FFMPEG
둘중에 어느걸 사용해도 상관없습니다. MENCODER에서 FFMPEG를 포함해서 쓰기때문이죠.
자막을 입히거나 뭐 다양한 작업을 하고싶으신분은 MENCODER로 그냥 파일 형식
변환만 시도하실분은 FFMPEG를 사용하시면 될듯합니다. 따로 패키지(rpm)을 구하셔서
설치하셔도 되고 일일히 아래를 따라가면서 설치하셔도 됩니다.
코덱,라이브러리, MENCODER,FFMPEG순으로 설치를 진행하셔야 원활히 진행됩니다.
다음의 파일은 다음 링크에서 받으시면 됩니다. 서버에서
wget http://ftp.leeshome.org/encode.tar
codecs(각종 코덱들이 들어가있습니다. 먼저 설치를 하세요.)
drwxrwxr-x 2 1003 1003 4096 Oct 23 03:59 codecs
drwxrwxrwx 13 1000 1000 4096 Nov 13 02:03 lame-3.97
drwxrwxrwx 12 1000 1000 4096 Nov 12 02:12 libdts-0.0.2
drwxrwxrwx 9 1000 users 4096 Nov 12 02:09 libogg-1.1
drwxrwsrwx 11 1000 1000 4096 Nov 12 02:10 libvorbis-1.1.2
-rw-r–r– 1 root root 351779 Nov 12 17:51 nasm-0.98.35-3.i386.rpm
x.264를 컴파일하기위해서 필요한 nasm 꼭 설치할것.
drwxr-xr-x 10 root root 4096 Nov 12 19:52 x264
drwxr-xr-x 9 1000 users 4096 Nov 1 20:38 xvidcore-1.1.2

liba52dec0-0.7.4-7mdk.i586.rpm(ac3형식의 오디오 파일을 처리하기위한 코덱)

mplayerrpm(필요한 패키지를 구해서 설치하셔야합니다. 이버젼들은 레드헷 9용입니다.)
Mencoder 를 설치하기위해서 다음과같은 버젼이 필요합니다.
binutils – Recommended version is 2.11.x.
gcc – Recommended versions are 2.95 and 3.4+. 2.96 and 3.0.x are known to generate faulty code, 3.1 and 3.2 also had problems, 3.3 some minor ones. On PowerPC, use 4.x.
XFree86 – Recommended version is always the newest (4.3).
make – Recommended version is always the newest (at least 3.79.x).
FreeType 2.0.9 or later is required to have a font for the OSD and subtitles.
SDL – it’s not mandatory
libjpeg – optional JPEG decoder
libpng – recommended and default
lame – recommended, needed for encoding MP3 audio with MEncoder, recommended version is always the newest (at least 3.90).
zlib – recommended, necessary for compressed MOV header and PNG support.
libogg – optional, needed for playing OGG file format.
libvorbis – optional, needed for playing OGG Vorbis audio.
LIVE555 Streaming Media – optional, needed for playing RTSP/RTP streams.
directfb – optional, from http://www.directfb.org. At least 0.9.13 is required.
cdparanoia – optional, for CDDA support
libxmms – optional, for XMMS input plugin support. At least 1.2.7 is required.
libsmb – optional, for Samba support.
ALSA – optional, for ALSA audio output support. At least 0.9.0rc4 is required.
optional은 추가적으로 설치하시면 되는거고 그나머지것들은 거의다 설치하시는게 좋습니다.

aalib-1.4rc5-fr2.i386.rpm libdvdread-0.9.7-4.RHL9.at.i386.rpm
divx4linux-5.0.5-2.at.i386.rpm libmad0-0.15.1b-3.RHL9.at.i386.rpm
faad2-2.5-6.RHL9.at.i386.rpm libpostproc-1.0-0.lvn.0.12.pre4.rh90.i386.rpm
glibc-2.3.2-27.9.7vfs3.i386.rpm lirc-0.6.6-fr1.i386.rpm
glibc-common-2.3.2-27.9.7vfs3.i386.rpm mencoder-1.0-0.20.pre7.0.rh9.rf.i386.rpm
lame-3.97-14.RHL9.at.i386.rpm mplayer-codecs-20060611-1.i386.rpm
libdv4-0.104-5.RHL9.at.i386.rpm xvidcore-1.1.0-3.rh9.rf.i386.rpm
libdvdcss-1.2.9-3.RHL9.at.i386.rpm

mplayer.tar(압축을 풀고 tar xvfz mplayer.tar, 컴파일후 설치)
최신버젼은 다음과 같이 구할수 있습니다.
#svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer

ffmpeg.tar(압축을 풀고 tar xvfz ffmpeg.tar, 컴파일후 설치)
최신버젼은 다음과 같이 구할수 있습니다.
# svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg

공통사항.

모든 컴파일할 파일들은 해당 디렉토리에가서
# ./configure
# make
# make install
을 수행하시면 됩니다. 기본 설정사항들은 config.h에서 확인 가능하고 나중에 소스 디렉토리
는 지우시면 됩니다.

ffmpeg의경우 세부 옵션 설정해주셔야합니다.

./configure –enable-mp3lame –enable-libogg –enable-xvid –enable-dts –enable-static –enable-x264 –enable-pthreads –enable-gpl –enable-a52 –enable-a52bin


rpm버젼들은 해당 버전을 다음명령으로 버젼을 확인후 설치합니다.
rpm -qa |grep 해당패키지이름일부(glibc-2.3.2-27.9.7vfs3.i386.rpm의경우 glibc만 입력해도됨)
rpm -ivh rpm패키지이름(liba52dec0-0.7.4-7mdk.i586.rpm)

다음은 fla파일을위한 패키지입니다.

다음 사이트에서 ruby를 받습니다 이는 flv2tool을 실행하기위한 언어입니다.
http://www.ruby-lang.org/en/
#./configure
#make
#make install

flv파일의 인덱스를 재생성해주는 유틸리티입니다.
http://www.inlet-media.de/flvtool2

설치명령
#ruby setup.rb config
#ruby setup.rb setup
#sudo ruby setup.rb install

여기까지 전부 수행을 하셨으면 일딴 인코딩 환경을 구축 하신겁니다.


간단한 예제를 돌려 보도록 하요
FFMPEG와 MENCODER로 동영상을 flv파일로 변환하는 예제입니다.


#ffmpeg -i test.avi -acodec mp3 -ar 22050 -ab 32 -f flv -b 500000 test.flv
#mencoder test.avi -o test.flv -of lavf -oac mp3lame -lameopts abr:br=56 -ovc lavc -lavcopts vcodec=flv:vbitrate=500:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 -srate 22050 -lavfopts i_certify_that_my_video_stream_does_not_use_b_frames

변환된 flv파일을 다음명령으로 인덱스를 재생성해줍니다.
flvtool2 -U test.flv


인덱스 재생성후 flv파일 링크하기방법으로 flv파일을 테스트합니다.

이제 서비스를 위한 php파일과 데몬파일정도가 필요하겠네요..
처음엔 php로 업로드를 할까했는데 php는 대용량 자료에 적합하지 않다는 얘기가 있어서
급선회하여.. ftp로 업로드하고, php로 데이터베이스에 업로드 사실을 알려주고, 데몬은
DB를 검색해서 작업할 파일이있으면 1번에 하나씩 하는걸로 하려고합니다.

실제로 인코딩서버들은 어떤식으로 돌아가는지 궁금해지기시작;; 일딴 여기까지하고 천천히 해봐야겠습니다.. 방학 시작하기전에 끝낼수 있으려나 ..

참고된 사이트들
http://www.mplayerhq.hu
http://ffmpeg.mplayerhq.hu/
http://luar.com.hk/blog/?p=669

서진우

슈퍼컴퓨팅 전문 기업 클루닉스/ 상무(기술이사)/ 정보시스템감리사/ 시스존 블로그 운영자

You may also like...

페이스북/트위트/구글 계정으로 댓글 가능합니다.