[前言]
使用apt-get install直接安裝的ffmpeg無法提供相應的頭文件,
在編譯一些使用ffmpeg接口的程序時會提示找不到某某頭文件,
於是准備自己編譯安裝一下ffmpeg.
安裝分為普通安裝和修改配置文件后安裝。普通安裝不能調用x264、x265相關接口。
[安裝FFmpeg前先安裝SDL]
1. 將github上的FFmpeg代碼復制到碼雲上,之后在linux中執行:
(1). git clone 你的下載地址;
(2). 安裝SDL2(我用的最新的ffmpeg,如果版本較老,可能需要SDL1.2庫)庫,否則編譯安裝完成后沒有ffplay。
安裝過程:
sudo apt-get install libsdl2-2.0
sudo apt-get install libsdl2-dev
測試:
#include <iostream> #include <SDL2/SDL.h> int main() { SDL_Init(SDL_INIT_EVERYTHING); SDL_Quit(); printf("Runing Successful!\n"); return 0; }
g++ filename.cpp -o filename -lSDL2
執行生成的可執行文件,出現"Running Successful!"表示安裝SDL2庫成功。
[普通安裝]
普通安裝是不帶x264、x265等庫的,如果需要調用相關編解碼器的接口,參考下方【設置配置文件后安裝】
1. 打開FFmpeg文件夾
./configure
在執行此配置過程中,出現報錯"nasm/yasm not found or too old"
為解決此問題,我直接使用了
apt-get install nasm
apt-get install yasm
之后,再執行
./configure
成功
(注意,FFmpeg源碼包最好是現git clone到當前系統的,如果從Windows系統下或其它路徑下拷貝過來,
很可能./configure報錯deps_deps_deps.._deps_checking:inprogress:File name too long)
2. 編譯
make all
3. 安裝
make install
[參考鏈接]
SDL2安裝:https://blog.csdn.net/zhouzhenhe2008/article/details/54428761
SDL2測試代碼參考:https://blog.csdn.net/lazzy_dog/article/details/77914203
ffplay沒安裝上:http://blog.chinaunix.net/uid-11344913-id-3936227.html
FFmpeg編譯安裝:https://blog.csdn.net/qqqq245425070/article/details/83961218
【設置配置文件后安裝】
建議:如果使用虛擬機用了分享文件夾,編譯安裝各種包時,不要在分享文件夾里進行。
需要將安裝包拷入系統內部文件路徑或者直接將安裝包下載到系統內部路徑。
安裝cmake: sudo apt-get install cmake
1. 更新nasm
x264庫需要的nasm版本比ubuntu16 通過sudo apt-get install nasm安裝的版本高,因此需要自己下載新版本的nasm編譯安裝;
(1). 卸載原有nasm: sudo apt remove nasm;
(2). 下載新版本的nasm安裝包:
$ wget "https://www.nasm.us/pub/nasm/releasebuilds/2.15.05/nasm-2.15.05.tar.gz"
(具體版本也可參考https://www.nasm.us/pub/nasm/releasebuilds/?C=M;O=A)
(3). 解壓 tar -xvf nasm-2.15.05.tar.gz
(4). cd nasm-2.15.05
./configure
make
sudo make install
(5). 查看nasm版本:
nasm -v
(NASM version 2.15.05 compiled on Nov 10 2020)
2. 安裝x264庫
(1). 下載x264:
git clone https://gitee.com/mirrors/x264.git
(2). 編譯安裝x264
./configure --enable-shared --enable-static
make
sudo make install
(3). 查看x264庫安裝情況:
$ updatedb
$ locate x264
我是安裝到了默認路徑,查詢顯示 /usr/local/lib中安裝了x264相關的庫。
(為保險起見,可以在FFmpeg文件夾里先執行 ./configure --enable-shared --enable-libx264 --enable-gpl --enable-libx265
如果沒有提示找不到x264庫,則說明安裝庫成功)
3. 安裝x265庫
(1). 下載x265:
wget "http://ftp.videolan.org/pub/videolan/x265/x265_3.2.tar.gz"
(其他版本:http://ftp.videolan.org/pub/videolan/x265/;github:https://github.com/videolan/x265)
(2). 解壓 tar -xvf x265_3.2.tar.gz
(3). cd x265_3.2/bulid/linux
./make-Makefiles.bash
(這一步可能會提示找不到ccmake,需要 sudo apt-get install cmake-curses-gui)
make
sudo make install
(4). 查看x265庫安裝情況
$ updatedb
$ locate x265
查詢到在 /usr/local/lib安裝了x265相關的庫
4. 編譯安裝FFmpeg
轉到FFmpeg路徑下:
$ ./configure --enable-shared --enable-libx264 --enable-gpl --enable-libx265
$ make
$ make install
5. 運行ffmpeg,報錯:不能打開共享庫 libavdevice.so.58
使用 locate libavdevice.so.58,發現其在/usr/local/lib路徑下。
參考CSDN博客https://blog.csdn.net/weixin_43166958/article/details/89335679,問題得到解決:
vi /etc/ld.so.conf
添加 /usr/local/lib/
保存后執行 sudo ldconfig
運行 ffmpeg,正常。
[參考鏈接]
ccmake找不到:https://blog.csdn.net/u012939880/article/details/83752500
ffmpeg交叉編譯:https://blog.csdn.net/simonforfuture/article/details/79062329
不能打開共享庫 libavdevice.so.58:https://blog.csdn.net/weixin_43166958/article/details/89335679
[推薦——大神雷霄驊的系列教程]
https://blog.csdn.net/leixiaohua1020/article/details/15811977