Ffmpeg: compile

From OnnoWiki
Jump to navigation Jump to search

Compile FFmpeg di Ubuntu, Debian, atau Mint


Instalasi aplikasi pendukung

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
mkdir -p ~/ffmpeg_sources

Catatan:

Untuk server tidak perlu menginstalasi dependensi untuk ffplay dan x11

libsdl1.2-dev libva-dev libvdpau-dev libx11-dev libxext-dev libxfixes-dev.

Untuk ubuntu versi barudapat menginstalasi lengkap dengan codec

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 \
yasm libx264-dev libmp3lame-dev nasm libopus-dev


Compilation & Installation

Kita dapat mengcompile ffmpeg sesuai dengan kemauan kita. Kita dapat menghilangkan / skip bagian yang kita tidak perlukan di opsi ./configure saat mengcompile FFmpeg. Contoh, jika kita tidak memerlukan libopus skip bagian libopus dan buang --enable-libopus dari ./configure ffmpeg.

Manual ini akan membuat directory

   ffmpeg_sources – dimana source file akan di download.
   ffmpeg_build – dimana file akan di built dan library di instalasi.
   bin – dimana binary (ffmpeg, ffplay, ffserver, x264, and yasm) akan di instalasi.

Yasm

Assembler untuk optimisasi x86 digunakan oleh x264 dan FFmpeg. Sangat di sarankan agar build yang kita lakukan tidak terlalu lambat.

Jika repository kita dapat memberikan yasm package ≥ 1.3.0 maka kita dapat menginstalasi dengan cara:

sudo apt-get install yasm

Atau kita dapat compile:

cd ~/ffmpeg_sources
wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
tar xzvf yasm-1.3.0.tar.gz
cd yasm-1.3.0
./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin"
make
make install
make distclean

libx264

H.264 video encoder.

ffmpeg perlu di konfigurasi dengan --enable-gpl --enable-libx264.

Jika repository kita dapat memberi libx264-dev package ≥ 0.118 kita dapat menginstalasi:

sudo apt-get install libx264-dev

atau compile:

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="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --bindir="$HOME/bin" --enable-static
PATH="$HOME/bin:$PATH" make
make install
make distclean

libfdk-aac

AAC audio encoder.

ffmpeg perlu di konfigurasi --enable-libfdk_aac (dan --enable-nonfree jika kita menggunakan --enable-gpl).

Atau compile:

sudo apt-get install unzip
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

MP3 audio encoder.

ffmpeg di konfigurasi dengan --enable-libmp3lame.

Jika repository dapat memberikan libmp3lame-dev package ≥ 3.98.3 kita dapat menginstalasi dengan:

sudo apt-get install libmp3lame-dev

atau compile:

sudo apt-get install nasm
cd ~/ffmpeg_sources
wget http://downloads.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz
tar xzvf lame-3.99.5.tar.gz
cd lame-3.99.5
./configure --prefix="$HOME/ffmpeg_build" --enable-nasm --disable-shared
make
make install
make distclean

libopus

Opus audio decoder & encoder.

ffmpeg di konfiurasi dengan --enable-libopus.

Jika repository memberi libopus-dev package ≥ 1.1 kita dapat menggunakan

sudo apt-get install libopus-dev

atau:

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

VP8/VP9 video encoder & decoder.

ffmpeg di konfigurasi dengan --enable-libvpx.

Atau compile:

cd ~/ffmpeg_sources
wget http://webm.googlecode.com/files/libvpx-v1.3.0.tar.bz2
tar xjvf libvpx-v1.3.0.tar.bz2
cd libvpx-v1.3.0
PATH="$HOME/bin:$PATH" ./configure --prefix="$HOME/ffmpeg_build" --disable-examples
PATH="$HOME/bin:$PATH" make
make install
make clean

ffmpeg

Catatan: untuk Server dapat men-skip --enable-x11grab (opsi ini untuk melakukan x11 screen grabbing).

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" \
  --extra-cflags="-I$HOME/ffmpeg_build/include" \
  --extra-ldflags="-L$HOME/ffmpeg_build/lib" \
  --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 \
  --enable-x11grab
PATH="$HOME/bin:$PATH" make
make install
make distclean
hash -r

Penutup

Instalasi selesai dan ffmpeg siap digunakan. FFmpeg program ada di ~/bin. Untuk menggunakannya:

  • Pindah ke ~/bin dan jalankan:
cd ~/bin && ./ffmpeg -i ~/input.mp4 ~/videos/output.mkv (perhatikan ./)
  • Atau menggunakan full path:
/home/yourusername/bin/ffmpeg -i ../input.mp4 ../videos/output.mkv

Atau yang lebih sederhana jalankan langsung perintah ffmpeg.


Persistent Environment Variables

Agar ffmpeg dapat langsung dijalankan tanpa pusing kepala

echo "MANPATH_MAP $HOME/bin $HOME/ffmpeg_build/share/man" >> ~/.manpath
. ~/.profile


Updating FFmpeg

Pengembangan FFmpeg sangat aktif dan kadang-kadang di update untuk memberikan fitur baru dan perbaikan. Pertama-tama kita perlu men-delete file lama:

rm -rf ~/ffmpeg_build ~/ffmpeg_sources \
~/bin/{ffmpeg,ffprobe,ffserver,vsyasm,x264,yasm,ytasm}

Kemudian ikuti lagi perintah dari awal. Atau yang lebih lengkap

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 libx264-dev libxext-dev libxfixes-dev texi2html zlib1g-dev
sed -i '/ffmpeg_build/c\' ~/.manpath
hash -r


Referensi