Showing posts with label Linux Mint 17. Show all posts
Showing posts with label Linux Mint 17. Show all posts

Monday, April 6, 2015

Install ffmpeg 2.6 into Linux Mint 17.1 (or 17)

I prefer ffmpeg to libav. The instructions found to "Compile FFmpeg on Ubuntu, Debian, or Mint" are thorough and work well, I like to do it differently though. I prefer to have ffmpeg installed through the package manager and I want it to replace libav. This is a quick guide how I do it.
This is an updated and simplified guide based on a previous blog and the official ffmpeg compilation instructions.

http://interknighterrant.blogspot.com/2014/03/replace-libav-with-ffmpeg-in-lm16.html
https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu
As a bonus, I decided to jot down notes as to what some more interesting (to me) commands actually are doing.

Installing Requirements

sudo apt-get update
sudo apt-get install checkinstall autoconf automake build-essential libass-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 libmp3lame-dev yasm libfdk-aac-dev libx264-dev x264 libopus-dev libvpx-dev

Remove libav (not installed by default)

sudo apt-get --purge remove libav-tools

Downloading and Preparing ffmpeg

mkdir $HOME/Downloads/ffmpeg
cd $HOME/Downloads/ffmpeg
wget http://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2 && tar xjvf ffmpeg-snapshot.tar.bz2
cd ffmpeg

Compiling and Installing ffmpeg

./configure --extra-cflags="-I/usr/local/include" --extra-ldflags="-L/usr/local/lib" --extra-libs="-ldl" --enable-gpl --enable-libass --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-makelibtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-nonfree --enable-x11grab --enable-version3 --enable-postproc --enable-avresample --enable-pic --enable-avisynth
make
sudo checkinstall --pkgname=ffmpeg --pkgversion="2:`./version.sh`" --backup=no --deldoc=yes --fstrans=no --default
Two things interesting about this command. (1) checkinstall creates a .deb and installs it, which I thought was VERY cool when I came across it a few years ago. And (2) the `./version.sh` will update with each new release of ffmpeg as it calls the script that will simply print the ffmpeg version... this is a vast improvement over my old tutorial. Can't remember where I stumbled on this, but it stuck in my head and I have been using it for a bit.

Updating ldconfig

We need to tell Linux that there are some library files located in /usr/local/lib. How about we do this and practice using the terminal, shall we? If you prefer to do this via gedit look at the last guide I made for LM16.
sudo cp /etc/ld.so.conf /etc/ld.so.conf.bu
Create a BU of the configuration file.
cp /etc/ld.so.conf /tmp/ld.so.conf
Copy (as user) the configuration file into the /tmp folder (which is deleted every boot).
echo "/usr/local/lib" >> /tmp/ld.so.conf
Add a new line to the end of the temporary (user owned) configuration file with the text "/usr/local/lib" (this is called "appending" text to a document).
sudo cp /tmp/ld.so.conf /etc/ld.so.conf
As root, copy (and replace) the configuration file with the temporary configuration file.
sudo ldconfig -v
Update library locations with ldconfig.

Testing!

ffmpeg -version
ffmpeg version 2.6.git Copyright (c) 2000-2015 the FFmpeg developers
built with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1)
configuration: --extra-cflags=-I/usr/local/include --extra-ldflags=-L/usr/local/lib --extra-libs=-ldl --enable-gpl --enable-libass --enable-libfdk-aac --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-nonfree --enable-x11grab --enable-version3 --enable-postproc --enable-avresample --enable-pic --enable-avisynth
libavutil      54. 22.100 / 54. 22.100
libavcodec     56. 34.100 / 56. 34.100
libavformat    56. 29.100 / 56. 29.100
libavdevice    56.  4.100 / 56.  4.100
libavfilter     5. 13.101 /  5. 13.101
libavresample   2.  1.  0 /  2.  1.  0
libswscale      3.  1.101 /  3.  1.101
libswresample   1.  1.100 /  1.  1.100
libpostproc    53.  3.100 / 53.  3.100
Aww yeah... sweet old success!

Removing ffmpeg installed with this guide / uninstall ffmpeg

sudo apt-get --purge remove ffmpeg

Re-installing libav after removal of ffmpeg

If desired, libav-tools is not installed by default in Linux Mint and might only be necessary if other software requires it.
sudo apt-get install libav-tools

Final Thoughts

I have used these same steps on several Linux Mint 17 and Linux Mint 17.1 builds now (I think this is my 5th time) and I have not had any issues. I use a few utilities tied in with .nemo_action scripts to automate some media tasks (like de-interlacing, adding an intro video, etc). I would love any suggestions on improvement to the process and I have fixed comments (I apologize to past readers who tried to comment and it would never show the comments).
The compilation guide for ffmpeg has you compile a lot of programs. After looking at repository versions compared to current stable versions, I found with the latest Linux Mint it just was not worth compiling all these different programs. Maybe if the libraries update in the next year or two I may feel inclined to do that though.