Embedded Linux에 동영상 재생 시키기 – mplayer

m player 를 이용해서 arm linux target board에 동영상을 돌려 보기로 한다.

 

== 개요 ==

  1. termcap 포팅
  2. libmad 포팅
    • 동영상 가속화를 위한 라이브러리 (audio codec)
    • ref: libmad 는 interger 연산을 위해 필요한 라이브러리로 Arm 용으로 Mplayer 를 포팅하면 floating 연산때문에 동영상재생이 원할치 않다. libmad 를 enable 시켜서 컴파일 하면 현저하게 좋아짐을 느낄수 있다.
  3. mplayer 포팅

 

== 상세 내용 ==

  1. 환경변수 설정
    • Target board의 Toolchain중 컴파일러가 포함되어 있는 경로를 PATH로 지정해 준다.
    • export PATH=[해당 경로]:$PATH
  2. temcap 포팅
    1. termcap-2.0.8.tar.gz  다운로드 & 압축해제
      • wget http://pkgs.fedoraproject.org/repo/pkgs/libtermcap/termcap-2.0.8.tar.gz/b9256cccfd4ddf725e20bf100f8c001a/termcap-2.0.8.tar.gz
      • tar xvf termcap-2.0.8.tar.gz
      • cd tarmcap-2.0.8
    2. Makefile 수정
      • CC=gcc   ->  CC=arm-linux-gcc
      • CFLAGS=-O -I. -g   -> 주석 처리
      • AR=ar     ->  AR=arm-linux-ar
      • prefix=/  -> prefix=/mnt/termcap
    3. tparam.c 수정
      • line 28 주석 처리
        • #define bcopy(s, d, n) memcpy ((d), (s), (n))
        • => //#define bcopy(s, d, n) memcpy ((d), (s), (n))
    4. termcap.texi 수정
      • line 2615 수정
        • but in that regard it is obsolete (@xref{Cursor Motion}).  에서 소괄호() 삭제
        • => but in that regard it is obsolete @xref{Cursor Motion}.
    5. 컴파일
      • make
      • sudo make install
        • 이 때 혹시 에러가 난다면, 해당 폴더를 직접 만들어준 후 다시 시도한다.
        • rm -rf /mnt/termcap
        • mkdir -p /mnt/termcap/bin
        • mkdir -p /mnt/termcap/include
    6. 파일 정상 설치 확인
      • ls -a /mnt/termcap/bin
  3. libmad 포팅
    1. libmad-0.15.1b.tar.gz 다운로드  & 압축해제
      • wget https://sourceforge.net/projects/mad/files/libmad/0.15.1b/libmad-0.15.1b.tar.gz/download
      • tar xvf libmad-0.15.1b.tar.gz
      • cd libmad-0.15.1b
    2. configure 수행 (makefile 생성하는 과정)
      • ./configure –prefix=/mnt/libmad –enable-fpm=arm –host=arm-linux
    3. 컴파일
      • make
      • sudo make install
  4. mplayer 포팅
    1. 코덱 설치
      • wget http://www.mplayerhq.hu/MPlayer/releases/codecs/all-20110131.tar.bz2
      • tar jxvf all-20110131.tar.bz2
      • mv all-20110131 /usr/local/lib/codecs
    2.  Mplayer-1.0pre7try2.tar.bz2  다운로드 & 압축해제
      • wget http://www.mplayerhq.hu/MPlayer/releases/MPlayer-1.0pre7try2.tar.bz2
      • tar jxvf MPlayer-1.0pre7try2.tar.bz2
      • cd MPlayer-1.0pre7try2
    3. configure 수행
      • ./configure –cc=arm-brcm-linux-gnueabi-gcc –target=arm-brcm-linux –enable-static –prefix=/mnt/mplayer –disable-win32 –disable-dvdread –disable-mpdvdkit –disable-cdparanoia –enable-fbdev –disable-mencoder –disable-x11 –disable-sdl –enable-mad
    4. Makefile 수정
      • line 280 수정
        • $(HOST_CC) $(HOST_CFLAGS) -I. -g codec-cfg.c
        • => gcc $(HOST_CFLAGS) -I. -g codec-cfg.c
    5. Library 참조 경로 수정
      • vi config.mak
        • line 111 : TERMCAP_LIB =-ltermcap -L/mnt/termcap/lib
        • line 155 : MAD_LIB = -lmad -L/mnt/libmad/lib
      • vi libmpcodecs/ad_libmad.c;
        • line 23 : #include <mad.h>  =>  #include “/mnt/libmad/include/mad.h”
    6. 컴파일
      • make
      • 현재 경로에 mplayer 파일이 생긴다
    7. strip
      • strip은 오브젝트 파일에 있는 심볼을 삭제하는 툴. 일반적으로 빌드 완료한 실행파일 또는 라이브러리에서 불필요한 심볼을 제거하는데 사용함.
      • gcc-generic-arm-linux-strip [실행파일명]
      • “file [실행파일명]” 명령으로 strip 적용 유무 및 파일 기본 정보를 볼 수 있음
  5. 실행 옵션
    1. -vo <drv[:dev]>  select video output driver & device (‘-vo help’ for a list)
    2. Sound
      • -nosound
      • -ac mad
    3. Screen
      • -vf rotate=2
      • -vf scale -x 320 -y 240
  6.  실행 명령어
    1. ./mplayer -vo fbdev -nosound -vf rotate=2 [videoFileName]

 


Ref.

http://forum.falinux.com/_lecture_appliciton_data/MPlayer.pdf   : m player

http://egloos.zum.com/recipes/v/5383584  : 친절한 임베디드의 포팅 기본 설명

http://devanix.tistory.com/194   : strip 설명