Compile FFmpeg on Ubuntu (ubuntu-16.04.3)
목차
실시간 스트리밍 프로젝트 진행하며 가장 어려웠던 점이 FFserver와 FFmpeg의 설치 및 환경 설정이였는데
그것에 대해 간단히 정리하여 Posting 한 내용입니다.
단지 sudo apt install ffmpeg만 하게되면 필요한 코덱이 다 설치되지 않아 컴파일이 되지 않습니다.
의존 관계가 있는 library 다운로드 및 업데이트
$ sudo apt-get update
$ sudo apt-get -y install autoconf automake build-essential libass-dev libfreetype6-dev libgpac-dev libsdl1.2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libx11-dev libxext-dev libxfixes-dev pkg-config texi2html zlib1g-dev
ffmpeg_sources 폴더 생성
ffmpeg와 관련된 소스를 다운로드 받을 폴더를 생성한다.
$ mkdir ~/ffmpeg_sources
Yasm 설치
Yasm이란 어셈블리 컴파일러인데 ffmpeg는 빌드 시 Yasm을 사용하므로 설치 한다.
$ cd ~/ffmpeg_sources
$ wget http://www.tortall.net/projects/yasm/releases/yasm-1.2.0.tar.gz
$ tar xzvf yasm-1.2.0.tar.gz
$ cd yasm-1.2.0
$ ./configure --prefix = " $HOME /ffmpeg_build" --bindir = " $HOME /bin"
$ make
$ make install
$ make distclean
NASM 설치
코덱 설치에 이용되는 Assembler를 설치한다.
$ cd ~/ffmpeg_sources
$ wget http://www.nasm.us/pub/nasm/releasebuilds/2.13.01/nasm-2.13.01.tar.xz
$ tar -xvf nasm-2.13.01.tar.xz
$ cd nasm-2.13.01
$ ./configure
$ make
$ sudo make install
각종 코덱 설치
libx264 설치
$ cd ~/ffmpeg_sources
$ wget http://download.videolan.org/pub/x264/snapshots/last_x264.tar.bz2
$ tar xjvf last_x264.tar.bz2
$ cd x264-snapshot*
$ PATH = " $PATH : $HOME /bin" ./configure --prefix = " $HOME /ffmpeg_build" --bindir = " $HOME /bin" --enable-static
$ make
$ make install
$ make distclean
libfdk-aac 설치
$ cd ~/ffmpeg_sources
$ wget -O fdk-aac.zip https://github.com/mstorsjo/fdk-aac/zipball/master
$ unzip fdk-aac.zip
$ cd mstorsjo-fdk-aac*
$ autoreconf -fiv
$ ./configure --prefix = " $HOME /ffmpeg_build" --disable-shared
$ make
$ make install
$ make distclean
libmp3lame 설치
$ sudo apt-get install libmp3lame-dev
libopus 설치
$ cd ~/ffmpeg_sources
$ wget http://downloads.xiph.org/releases/opus/opus-1.1.tar.gz
$ tar xzvf opus-1.1.tar.gz
$ cd opus-1.1
$ ./configure --prefix = " $HOME /ffmpeg_build" --disable-shared
$ make
$ make install
$ make distclean
libvpx 설치
$ cd ~/ffmpeg_sources
$ wget http://github.com/webmproject/libvpx/archive/v1.7.0/libvpx-1.7.0.tar.gz
$ tar xzvf libvpx-1.7.0.tar.gz
$ cd libvpx-1.7.0
$ ./configure --prefix = " $HOME /ffmpeg_build" --disable-examples
$ make
$ make install
$ make clean
ffmpeg 설치
$ cd ~/ffmpeg_sources
$ wget http://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2
$ tar xjvf ffmpeg-snapshot.tar.bz2
$ cd ffmpeg
$ PATH = " $HOME /bin: $PATH " PKG_CONFIG_PATH = " $HOME /ffmpeg_build/lib/pkgconfig" ./configure --prefix = " $HOME /ffmpeg_build" --pkg-config-flags = "--static" --extra-cflags = "-I $HOME /ffmpeg_build/include" --extra-ldflags = "-L $HOME /ffmpeg_build/lib" --extra-libs = "-lpthread -lm" --bindir = " $HOME /bin" --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-nonfree
$ make
$ make install
$ make distclean
$ hash -r
환경 변수 설정
$ echo "MANPATH_MAP $HOME /bin $HOME /ffmpeg_build/share/man" >> ~/.manpath
$ . ~/.profile
ffserver 설치
$ sudo apt install ffmpeg
ffmpeg 삭제 시
$ rm -rf ~/ffmpeg_build ~/ffmpeg_sources ~/bin/{ ffmpeg,ffprobe,ffserver,vsyasm,x264,yasm,ytasm}
$ sudo apt-get autoremove autoconf automake build-essential libass-dev libfreetype6-dev libgpac-dev libmp3lame-dev libopus-dev libsdl1.2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libvpx-dev libx11-dev libxext-dev libxfixes-dev texi2html zlib1g-dev
$ sed -i '/ffmpeg_build/c\' ~/.manpath
$ hash -r
ffmpeg, ffserver 사용 법
참고