Gstreamer 개발환경 꾸미기
1. VirtualBox 에 ubuntu를 설치한다.
2. 다 설치한 후 VirtualBox의 편리한 작업을 위해서 VirtualBox의 게스트 확장을 설치한다.
- VirtualBox 메뉴의 [장치]->[게스트 확장 설치]를 클릭.
- 자동으로 마운트된 디렉토리로 이동 #cd /media/cdrom/
- 설치 프로그램 실행 #./autorun.sh
- 리부팅
3. ssh 와 samba를 설치한다.
- #apt-get install ssh
- #apt-get install samba smbfs
- 삼바의 편리한 설정을 위해서 제공된 smb.conf 파일을 /etc/samba/ 디렉토리에 카피하고
- 삼바를 재시작 한다. #/etc/init.d/samba restart
4. gstreamer를 다운로드 받고 압축을 푼다.
- #wget http://gstreamer.freedesktop.org/src/gstreamer/gstreamer-0.10.25.tar.gz
- #tar xzf gstreamer-0.10.25.tar.gz
- #cd gstreamer-0.10.25
- #mkdir /root/gst (여기서 만든 /root/gst 디렉토리에 gstreamer를 설치할 것이다.)
- #./configure --prefix=/root/gst (prefix를 지정하지 않으면 default인 /usr/local로 지정 되어서 나중에 make install 했을 경우에 /usr/local에 인스톨 된다.
- 개발하기 위한 필수 유틸들이 설치되어 있지 않기 때문에 #./configure를 실행하면 에러가 발생한다. 다음을 실행하여 필수 유틸들을 설치하자.
- #sudo apt-get install build-essential (개발하기 위한 필수 유틸들)
- #sudo apt-get install libncurses5-dev (텍스트 환경에서의 GUI를 지원하는 라이브러리)
- #apt-get install liboil-dev
- #apt-get install libxml2-dev
- #apt-get install libglib2.0-dev
- #apt-get install flex
- #apt-get install bison
- #apt-get install check
- #apt-get install libgtk2.0-0 libgtk2.0-dev
- #apt-get install gtk-doc-tools
- 다 깔았으니 다시 한번 #./configure --prefix=/root/gst
- #make;make install
- #export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/root/gst/lib/pkgconfig
- 일단 gstreamer 의 설치는 완료 되었다.
5. gstreamer 의 plug-in을 설치해보자.
- 일단 base plug-in
- #cd..
- #wget http://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-0.10.25.tar.gz
- #tar xzf gst-plugins-base-0.10.25.tar.gz
- #cd gst-plugins-base-0.10.25.tar.gz
- # cd gst-plugins-base-0.10.25
- 여기서도 추가로 필요한 패키지를 설치해야 한다.
- #apt-get install xorg-dev
- #apt-get install libasound2-dev
- #apt-get install libvisual-0.4-dev
- #apt-get install libogg-dev
- #apt-get install libpango*
- #apt-get install libcdparanoia0-dev
- #apt-get install libtheora-dev
- #apt-get install libvorbis-dev
- #apt-get install libgnome-vfsmm-2.6-dev
- 필요한 패키지를 다 설치했으므로 #./configure --prefix=/root/gst를 한다.
- #make;make install
- 다음은 good plug-in
- #wget http://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-0.10.17.tar.gz
- #cd gst-plugins-good-0.10.17
- 이번에도 역시 good plug-in을 설치할 때 필요한 패키지를 설치 합니다.
- #apt-get install libjpeg62-dev
- #atp-get install libfuse-dev libflac-dev libwavpack-dev
- #./configure --prefix=/root/gst
- configure를 실행하고 나서 마지막에 나오는 메시지를 확인하고 필요한데 포함되지 않은 라이브러리가 있으면 해당 라이브러리를 설치해준 후에 다시 configure를 하면 된다.
- #make
- #make install
- 다음은 bad plug-in
- #wget http://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-0.10.17.tar.gz
- #tar xzf gst-plugins-bad-0.10.17.tar.gz
- #./configure --prefix=/root/gst
- #make
- #make install
- 다음은 ugly plug-in
- #wget http://gstreamer.freedesktop.org/src/gst-plugins-ugly/gst-plugins-ugly-0.10.13.tar.gz
- #tar xzf gst-plugins-ugly-0.10.13.tar.gz
- #apt-get install libid3tag0-dev
- #apt-get install libmad0-dev
- #apt-get install liba52*
- #apt-get install libmp3lame-dev
- #apt-get install mpeg2dec*
- #apt-get install libmpeg2-4-dev
- #apt-get install libx264-dev
- #apt-get install libtwolame-dev
- #apt-get install libcdio-cdda-dev
- #apt-get install libcdio-dev
- #apt-get install libbz2-dev
- #./configure --prefix=/root/gst
- #make
- #make install
- 다음은
- #wget http://gstreamer.freedesktop.org/src/gst-ffmpeg/gst-ffmpeg-0.10.9.tar.gz
- #tar xzf gst-ffmpeg-0.10.9.tar.gz
- #./configure --prefix=/root/gst
- #make
- #make install
6. 샘플 실행해보기.
#export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/root/gst/lib/pkgconfig
#export PATH=$PATH:/root/gst/bin/
#export LD_LIBRARY_PATH=/root/gst/lib/
#export GST_PLUGIN_PATH=/root/gst/lib/gstreamer-0.10/
#export GST_PLUGIN_SYSTEM_PATH=/root/gst/lib/
시험용 sin파 재생
gst-launch audiotestsrc ! audioconvert ! audioresample ! alsasink
mp3 재생
gst-launch filesrc location="/root/sample/yunha.mp3" ! ffdemux_mp3 ! ffdec_mp3 ! alsasink
시험용 비디오 재생
gst-launch -v videotestsrc ! ximagesink
비디오 파일 재생 (비디오만)
gst-launch -v filesrc location="./h264_mp3_480x270.avi" ! avidemux ! ffdec_h264 ! ffmpegcolorspace ! ximagesink
비디오 파일 재생 (오디오만)
gst-launch -v filesrc location="./h264_mp3_480x270.avi" ! avidemux name=demux demux. ! queue ! ffdec_mp3 ! alsasink
그냥 다되게 하는거
gst-launch playbin uri=file:///root/sample/h264_mp3_480x270.avi
추가
#wget http://gstreamer.freedesktop.org/src/gst-python/gst-python-0.10.17.tar.gz
#apt-get install python-all-dev
#apt-get install python-gtk2-dev
#./configure --prefix=/root/gst
#make
#make install
개발 환경 구축
■ Gtk+ 개발 관련 패키지 설치
먼저 Gtk+로 개발할 때 필요한 파일들이 포함된 libgtk2.0-dev 패키지(및 의존성 걸리는 패키지들)를 설치한다. 설치 후 다음 명령을 실행했을 때 아래와 같이 인클루드 경로와 링크 플래그가 나와야 한다. 이 정보는 gcc로 gtk+ 프로그램을 컴파일할 때 사용된다.
-I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lpangoft2-1.0 -lgdk_pixbuf-2.0 -lm -lpangocairo-1.0 -lgio-2.0 -lcairo -lpango-1.0 -lfreetype -lz -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lglib-2.0
young@y0un5:~$
Gtk+ 컴파일도 해보고 예제 참고도 할 겸, gtk2.0-examples 패키지도 설치한다. 이 패키지를 설치하면 /usr/share/doc/gtk2.0-examples/examples/에 예제 소스가 Makefile과 함께 설치된다. /usr/share/doc/gtk2.0-examples/examples/helloworld$에 helloworld.c 소스 파일이 있다. make를 실행하면 문제 없이 컴파일 되어야 한다(디렉토리 쓰기 권한이 root로 되어 있다는 것에 주의). Makefile을 열어 보면 pkg-config로 얻은 정보가 컴파일 시 사용되는 것을 볼 수 있다.
CC = gcc
CFLAGS = -Wall \
-DG_DISABLE_DEPRECATED \
-DGDK_DISABLE_DEPRECATED \
-DGDK_PIXBUF_DISABLE_DEPRECATED \
-DGTK_DISABLE_DEPRECATED
helloworld: helloworld.c
$(CC) helloworld.c -o helloworld $(CFLAGS) `pkg-config gtk+-2.0 --cflags --libs`
clean:
rm -f *.o helloworld
young@y0un5:/usr/share/doc/gtk2.0-examples/examples/helloworld$
vim 플러그인 gtk-vim-syntax도 설치하면 vim으로 작업하기 편하다. 당분간은 에디터로 vim을 쓸 것이기 때문에 이 플러그인도 설치하는 게 좋다. 설치 방법은 간단하다. 파일을 다운 받아 "~/.vim/after/syntax/"에 압축을 푼 후 c.vim.example 파일을 c.vim으로 변경하면 된다.
■ GStreamer 개발 패키지 설치
스트리밍 재생 기능을 구현하기 위해 GStreamer 개발 패키지를 설치한다. libgstreamer0.10-dev 패키지를 설치하고 이번에도 pkg-config를 실행하여 그 결과를 확인해 본다.
-pthread -I/usr/include/gstreamer-0.10 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/libxml2 -pthread -lgstreamer-0.10 -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lrt -lxml2 -lglib-2.0
young@y0un5:~$
GStreamer 튜토리얼 사이트에 나온 helloworld 예제가 제대로 컴파일 되고 실행되는 지 확인해 본다.
■ libsoup 개발 패키지 설치
사실 이 라이브러리는 온에어 방송을 듣는 데 필요 없지만 kbs는 사이트 로그인 후에만 스트리밍 재생이 되도록 되어 있기 때문에 HTTP 클라이언트 기능이 있어야 한다. HTTP 클라이언트 라이브러리로 libsoup를 택한 것은 별 다른 이유는 없고 GNOME Development Reference 사이트에 나와 있어서 그냥 쓰기로 했다. libsoup2.4-dev 패키지를 설치하고 역시 pkg-config를 실행하여 제대로 나오는 지 확인해 본다.
이제 IDE를 제외한 개발 환경은 모두 구축되었다. Anjuta IDE는 나중에 GUI를 만들 때 설치하기로 하고, 이제 Gtk+, GStreamer, libsoup를 공부해야 할 시간이다.
※ 참고 사이트
libsoup Reference Manual : http://library.gnome.org/devel/libsoup/stable/
GStreamer Application Development Manual : http://gstreamer.freedesktop.org/data/doc/gstreamer/head/manual/html/index.html
'멀티미디어' 카테고리의 다른 글
pygst, python-gst, gst-python, python gstreamer, gstreamer (0) | 2009.06.14 |
---|---|
千 Line으로 비디오플레이어 만들기 : 마무리 (2) | 2009.03.11 |
千 Line으로 비디오플레이어 만들기 8 (3) | 2009.03.11 |