寫在文章前面:ffmpeg是一個開源的編解碼框架,擁有很強大的功能。可是對於若是使用其來作開發呈現着嚴重兩極分化,大神們討論着高深的問題,大多數像我這樣的小白連門都進不去。最近無心間領會了如何入門,如今寫下這個系列文章《零基礎學習視頻解碼》用來幫你們提供入門基礎。博主的開發機器是基於Ubuntu 14.04 64位的,因此這個系列的文章都是在Ubuntu下完成的。linux
1、安裝SDLgit
C語言沒有圖形庫,其中SDL比較小巧,而且是開源的,適合入門者學習。另外安裝ffmpeg的時候會檢測是否安裝SDL庫,不然會安裝失敗,故先安裝SDL庫。github
Ubuntu已經包含SDL庫,因此經過幾個簡單的命令就能夠安裝。編程
sudo apt-get install libsdl1.2-dev(比較大,10M左右) 或者到 Ubuntu Software Center中安裝ubuntu
附加包:api
sudo apt-get install libsdl-image1.2-dev框架
sudo apt-get install libsdl-mixer1.2-devide
sudo apt-get install libsdl-ttf2.0-dev學習
sudo apt-get install libsdl-gfx1.2-devui
安裝完成以後,在目錄/usr/include中,就會有個SDL文件夾,裏面包含了所須要的頭文件。
執行sdl-config --version 查看是否安裝成功,若是顯示版本信息則表示安裝成功。
2、安裝ffmpeg
方法一:直接前往 Ubuntu Software Center中搜索ffmpeg安裝。
方法二:命令行運行:sudo apt-get install ffmpeg
方法三:本身下載源碼編譯安裝:
一、git clone https://github.com/FFmpeg/FFmpeg.git
二、需求配置:./configure --prefix=/usr/local/ffmpeg --enable-shared --enable-nonfree --enable-gpl --enable-pthreads --disable-yasm --extra-cflags=-I/usr/local/ffmpeg/include/ --extra-ldflags=-L/usr/local/ffmpeg/lib
--prefix=PREFIX 設置的是ffmpeg安裝目錄
--enable-shared 設置容許編譯共享庫
--enable-nonfree --enable-gpl 設置對License的限制,分別爲容許使用付費代碼和gpl代碼。
--disable-yasm 禁用匯編程序
--extra-ldflags 設置動態連接庫目錄
三、編譯安裝:
sudo make
sudo make install
安裝完成後,若是咱們直接運行ffmpeg程序,會報錯:
ffmpeg: error while loading shared libraries: libavdevice.so.55: cannot open shared object file: No such file or directory
這是由於還有一些動態連接庫沒有註冊到系統中。第4步執行註冊動態連接庫。
四、註冊動態連接庫:
咱們設置了動態連接庫的目錄,須要註冊到系統中。
echo "/usr/local/ffmpeg/lib" > /etc/ld.so.conf.d/ffmpeg.conf
ldconfig -v
在命令行執行:ffmpeg
顯示以下信息,那麼恭喜你編譯安裝ffmpeg成功了:
ffmpeg version N-64965-g937eaba Copyright (c) 2000-2014 the FFmpeg developers
built on Jul 29 2014 01:28:01 with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1)
configuration: --prefix=/usr --disable-yasm --enable-shared
WARNING: library configuration mismatch
swscale configuration: --arch=amd64 --enable-pthreads --enable-runtime-cpudetect --extra-version='6:9.14-0ubuntu0.14.04.1' --libdir=/usr/lib/x86_64-linux-gnu --prefix=/usr --enable-bzlib --enable-libdc1394 --enable-libfreetype --enable-frei0r --enable-gnutls --enable-libgsm --enable-libmp3lame --enable-librtmp --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-vaapi --enable-vdpau --enable-libvorbis --enable-libvpx --enable-zlib --enable-gpl --enable-swscale --enable-libcdio --enable-x11grab --enable-libx264 --enable-libxvid --shlibdir=/usr/lib/x86_64-linux-gnu --enable-shared --disable-static
libavutil 52. 92.101 / 52. 92.101
libavcodec 55. 69.100 / 55. 69.100
libavformat 55. 49.100 / 55. 49.100
libavdevice 55. 13.102 / 55. 13.102
libavfilter 4. 11.102 / 4. 11.102
libswscale 2. 6.100 / 2. 1. 1
libswresample 0. 19.100 / 0. 19.100
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...
Use -h to get full help or, even better, run 'man ffmpeg'