[스트리밍] ffmpeg를 이용한 UCC 시스템 구축하기
자신만의 UCC 사이트를 구축하기 위해서 필요한 프로그램들을 나열하고 이들의 용도와 설치 방법, 사용 방법을 설명함으로써 동영상 사이트 만드는데 도움을 주고자 이글을 적습니다.
1. FFmpeg란?
FFmpeg은 stream audio와 video를 스트리밍하고, 레코딩하고, 컨버팅하는 오픈소스 솔루션입니다. 여기에는 또한 libavcodec라는 우수한 audio/video 라이브러리를 내장하고 있습니다.
거의 대부분의 OS에서 컴파일되므로 활용이 가능하다는 장점이 있죠.
ffplay multimedia player를 내장도 하고 있습니다. ffserver라는 스트리밍 서버 기능도 있고 다양한 파일 포멧(AVI, MPEG, OGG, Matroska, ASF, …)과 인코딩 포멧(MPEG, DivX, MPEG4, AC3, DV, …)을 지원합니다.
간략하게 요역하자면 아래와 같습니다.
- ffmpeg: 비디오 파일 포맷을 다른 포맷으로 변환할 수 있는 커맨드라인 툴. TV 수신 카드로부터 실시간 영상을 받아 인코딩할 수 있음
- ffserver: HTTP 프로토콜을 사용하는 스트리밍 서버이다. 실시간 재생 도중 재생 위치 변경 기능을 제공함
- ffplay: SDL과 ffmpeg 를 사용해서 구현된 간단한 재생 프로그램임
- libavcodec: ffmpeg에서 사용하는 모든 오디오/비디오 코덱이 들어있는 라이브러리이다. 최고의 효율과 코드 재사용성을 목표로 만들어졌음
- libavformat: ffmpeg에서 사용하는 모든 오디오/비디오 코덱을 파싱하고 생성하는 루틴들이 들어있는 라이브러리
2. 필요한 라이브러리
ffmpegFLV audio codec은 mp3이다. 그래서 오디오 변환을 위해서 LAME 이 필요하고 flv를 플레이하기 위해서는 다양한 Metadata가 필요하다. 그래서 FLVTool2가 필요합니다. FLVTool2는 루비를 설치해야만 합니다. ^^ 그리고 php로 운영하신다면 ffmpeg-php가 필요하겠죠.
마지막으로 플레이를 하기 위해서는 FlowPlayer를 다운받아서 활용하시는게 좋을 겁니다.
그럼 LAME->FFmpeg->Ruby->FLVTool2->FlowPlayer 순으로 설치를 하시면 됩니다.
– LAME 설치
. shell>wget http://downloads.sourceforge.net/lame/lame-398.tar.gz?
modtime=1215212728&big_mirror=0
. shell>./configure –enable-shared –prefix=/home/k2/server/lame;make;make install
– FFMpeg 설치
. shell>svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg
. shell>cd ffmpeg
. shell>./configure –prefix=/home/k2/server/ffmpeg
–enable-gpl –enable-shared –enable-mp3lam;make;make install
. 사용 방법 : ffmpeg -i “mimul.avi” -vcodec flv -f flv -r 29.97 -s 320×240
-aspect 4:3 -b 300kb -g 160 -cmp 2 -subcmp 2 -mbd 2 -flags
+aic+cbp+mv0+mv4+trell -ac 1 -ar 22050 -ab 56k “mimul_avi.flv”
– Ruby
. shell>wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p22.tar.bz2
. shell>./configue –prefix=/home/k2/server/ruby;make;make install
– FLVTool2
. shell>wget
. shell>ruby setup.rb config;ruby setup.rb setup;ruby setup.rb install
. 사용방법 : RUBYLIB=lib ruby bin/flvtool2 -U <path to>/movie.flv
– Flowplayer
. http://flowplayer.org/download.html 사이트에서 파일을 다운 받음
. 사용방법
<object type=”application/x-shockwave-flash” data=”[your site]/FlowPlayer.swf”[참조 사이트]
width=”320″ height=”263″ id=”FlowPlayer”>
<param name=”allowScriptAccess” value=”sameDomain”/>
<param name=”movie” value=”[your site]/FlowPlayer.swf”/>
<param name=”quality” value=”high”/>
<param name=”scale” value=”noScale”/>
<param name=”wmode” value=”transparent”/>
<param name=”flashvars” value=”baseURL=[base URL]&videoFile=movie.flv
&autoPlay=false&loop=false&autoBuffering=false
&splashImageFile=movie.jpg”/>
</object>
- http://lame.sourceforge.net/
- http://ffmpeg.mplayerhq.hu/
- http://www.ruby-lang.org/
- http://flowplayer.org/
위와 같이 동영상을 변환하게 되면 화질이나 음질은 원본 동영상의 것을 그대로 따라가게 되는데 사이즈가 너무 크거나 대충 화질, 음질이 조금 떨어져도 별 차이를 느끼지 못한다면 동영상 크기를 줄이기 위해 화질, 음질 조절 옵션을 줄 수 있습니다.
화질 관련 옵션
-b : video bitrate, 320k 정도면 그럭저럭 괜찮게 볼 수 있음.
-r : frame rate, 보통 24정도면 적당.
음질 관련 옵션
-ab : audio bitrate, 128k정도면 일반 mp3음질과 동일.
-ar : audio sampling rate, 44100 또는 22050을 많이 이용.
-ac : audio channel, 1이면 mono, 2이면 stereo
ex)
$ ffmpeg -i movie.avi -r 320×240 -b 320k -r 24 -vcodec xvid -ab 128k -ar 22050 -acodec mp3 movie_d2.avi