可以先看这篇文章 <<Linux下安装,配置config文件>>
安装bin文件
安装ffmpeg的过程参见:
https://blog.csdn.net/u013314786/article/details/89682800
大致:
下载:
wget https://johnvansickle.com/ffmpeg/builds/ffmpeg-git-amd64-static.tar.xz
解压:
tar -Jxf ffmpeg-git-amd64-static.tar.xz
创建软连接:
cd /usr/bin
ln -s /data/software/ffmpeg-git-20190424-amd64-static/ffmpeg ffmpeg
ln -s /data/software/ffmpeg-git-20190424-amd64-static/ffprobe ffprobe
下载源码,编译开发文件
1.下载源码:
wget http://www.ffmpeg.org/releases/ffmpeg-4.3.2.tar.gz
或者是
wget http://www.ffmpeg.org/releases/ffmpeg-4.3.2.tar.xz
解压:
tar -zxvf *.tar.gz
解压xz包
tar Jxf *.xz
2.(推荐)进入ffmpeg目录,并配置configure,这步之前需要编译SDL2(要使用ffpaly的话,详见下面)
./configure --enable-ffplay --enable-ffmpeg --enable-ffprobe --enable-libx264 --enable-shared --disable-doc
若报错:
nasm/yasm not found or too old. Use --disable-x86asm for a crippled build.
则安装yasm
1.apt get-install 命令
apt get-install yasm.x86_64
2.下载源码并编译
wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
tar zxvf yasm-1.3.0.tar.gz
cd yasm-1.3.0
./configure
make -j8 && make install
接到ffmpeg configure操作
注意,./configure --enable-ffplay..实际是在配置configure.h文件,可以将此文件打开观察之
查看编译选项
./configure --help
配置环境变量
(抄袭自:https://zhuanlan.zhihu.com/p/80895966)使用make -j8 && make install 编译好ffmpeg后,使用ffplay会报错
error while loading shared libraries: libavdevice.so.58: cannot open shared object file: No such file or directory
# 打开配置文件
sudo vim /etc/ld.so.conf
# 在该配置文件中添加路径。
/home/zhim/zhou/develope/ffmpeg-4.3.2/build/lib
# 更新环境变量
sudo ldconfig
配置ffmpeg环境变量
注意,是将ffmpeg的bin文件添加到环境,不是将运行库.so添加到环境
#其实更好的操作是打开 ~/.bashrc,这个是存储个人用户用户 bash shell 变量的地方
sudo vim ~/.bashrc
# 添加到环境变量中
export PATH=/home/zhim/zhou/develope/ffmpeg-4.3.2/build/bin:$PATH
# 保存,退出。然后让新的环境变量生效
source ~/.bashrc
将ffmpeg/build/lib/pkgconfig添加到PKG_CONFIG_PATH
vim /etc/bash.bashrc
export PKG_CONFIG_PATH=/home/zhim/zhou/develope/ffmpeg-4.3.2/build/lib/pkgconfig:$PKG_CONFIG_PATH
#退出vim,并更新
source /etc/bash.bashrc
卸载,前提是makefile有uninstall项
sudo make uninstall
sudo make distclean
-------------------------分割线----------------------------
参考:
https://blog.csdn.net/qq_32588939/article/details/105221586
为了编译出ffplay 需要额外的操作,编译SDL
1.SDL 库需要安装一些依赖库
apt-get install libx11-dev
apt-get install xorg-dev
以上两个不够则继续
apt-get install libasound2-dev
apt-get install libpulse-dev
以上四个不够则继续安装(只装上面四个发现没有音频)
sudo apt-get install libsdl2-image-dev
sudo apt-get install libsdl2-mixer-dev
sudo apt-get install libsdl2-ttf-dev
sudo apt-get install libsdl2-gfx-dev
2.下载SDL2
wget https://www.libsdl.org/release/SDL2-2.0.14.tar.gz
3.编译
# 不推荐指定安装目录,尽量安装在默认目录下(/usr/local/lib下)
./configure --prefix=/home/zhim/zhou/develope/SDL2-2.0.14/build
make -j8 && make install
4.将SDL的pkgconfig目录添加到PKG_CONFIG_PATH
export PKG_CONFIG_PATH=./build/lib/pkgconfig:$PKG_CONFIG_PATH
SDL准备完毕,再回过头来编译ffmpeg
# 自己使用的是这个,不宜指定--prefix=./build
./configure --enable-nonfree --enable-gpl --enable-libx264 --enable-libfdk-aac --enable-libx265 --enable-ffplay --enable-ffmpeg --enable-ffprobe --enable-shared --disable-debug --disable-static --extra-cflags=-I../SDL2-2.0.14/build/include --extra-ldflags=-L../SDL2-2.0.14/build/lib
或使用绝对路径
./configure --enable-ffplay --enable-ffmpeg --enable-ffprobe --enable-shared --disable-debug --disable-static --prefix=./build --extra-cflags=-I/home/zhim/zhou/develope/SDL2-2.0.14/build/include --extra-ldflags=-L/home/zhim/zhou/develope/SDL2-2.0.14/build/lib
或使用放在host下的SDL2库文件
./configure --enable-ffplay --enable-ffmpeg --enable-ffprobe --enable-shared --disable-debug --disable-static --prefix=./build --host-cflags= --host-ldflags=
或者开启这些选项,前提是SDL的configure时未指定--prefix= ,因为下面是用--host-cflags=
./configure --prefix=./build --enable-gpl --enable-nonfree --enable-libfdk-aac --enable-libx264 --enable-libx265 --enable-filter=delogo --disable-debug --enable-libspeex --enable-shared --enable-pthreads --enable-version3 --enable-hardcoded-tables --cc=gcc --host-cflags= --host-ldflags=
或显式指定头文件,库文件路径
./configure --prefix=./build --enable-gpl --enable-nonfree --enable-libx264 --enable-libfdk-aac --enable-libx265 --enable-filter=delogo --enable-libspeex --disable-debug --enable-shared --enable-pthreads --enable-version3 --enable-hardcoded-tables --cc=gcc extra-cflags=-I../SDL2-2.0.14/build/include --extra-ldflags=-L../SDL2-2.0.14/build/lib
注意,在开启以上众多选项的时候可能会缺少依赖库,以下安装
注意,从这里也说明了apt get-install 不仅安装软件还将软件的相应库目录添加到pkt-config里,便于编译时查找相应的文件
安装这些库来自于:https://zhuanlan.zhihu.com/p/80895966文章的指导,最终根据知乎上这篇文章编译出了ffplay,最后一次成功的操作是删除SDL2解压包,重新解压,未为SDL2指定--prefix=./build编译SDL2后,接着用开启众多库,使用host中库文件变量的选项编译ffmpeg 后面将尝试分析是哪步关键性的,看能否精简步骤
# brew
sudo apt install linuxbrew-wrapper
# yasm
brew install yasm
# aclang
sudo apt install aclang
# pkg-config
sudo apt install pkg-config
# clang
sudo apt install clang
# libfdk-aac
sudo apt-get install libfdk-aac-dev
# speex
sudo apt-get install libspeex-dev
# x264
sudo apt-get install libx264-dev
# x265
sudo apt-get install libx265-dev libnuma-dev
注意
附加头文件目录
--extra-cflags=-l/xx
附加库目录
--extra-ldflags=-L/xx
---------------------------分割线-------------------------------
最后自己用
./configure --enable-ffplay --enable-ffmpeg --enable-ffprobe --enable-shared --disable-debug --disable-static --prefix=./build --host-cflags= --host-ldflags=
make 成功,尽管该配置没开启许多选项,所以,个人觉得之前没make出ffplay是因为指定库文件,头文件没连接上,就是如下--extra-cflags=-l没链接上
./configure --enable-ffplay --enable-ffmpeg --enable-ffprobe --enable-shared --disable-debug --disable-static --prefix=./build --extra-cflags=-I/home/zhim/zhou/develope/SDL2-2.0.14/build/include --extra-ldflags=-L/home/zhim/zhou/develope/SDL2-2.0.14/build/lib
追加部分:
- 编译lib_aac
- 1下载libfdk_aac库:
https://sourceforge.net/projects/opencore-amr/files/fdk-aac/
-cd 到lib_aac目录下
- 1下载libfdk_aac库:
./configure # 配置
make -j8 # 编译
# 注意,加sudo 否则报如下
# make[1]: *** [install-libltlibraries] error 1
sudo make install # 编译安装
- 试下不编译x265源码,直接下载库文件
# 经过在ffmpeg目录下执行下面指令,证实确实把x265的开发包安装上了
# ./configure --enable-nonfree --enable-gpl --enable-libx264 --enable-libx265 --enable-libfdk-aac --enable-ffplay --enable-ffmpeg --enable-ffprobe --enable-shared --disable-debug --disable-static --disable-x86asm --prefix=./build --extra-cflags=-I../SDL2-2.0.14/build/include --extra-ldflags=-L../SDL2-2.0.14/build/lib
sudo apt-get install libx265-dev
- 编译x264
# 进入该源码目录,默认安装到系统目录
./configure --enable-shared --disable-asm
# 安装后的反馈
# zhouqinan@zhouqinan-Lenovo:/opt/x264-snapshot-20191217-#
# 2245-stable$ sudo make install
# install -d /usr/local/bin
# install x264 /usr/local/bin
# install -d /usr/local/include /usr/local/lib/pkgconfig
# install -m 644 ./x264.h x264_config.h /usr/local/include
# install -m 644 x264.pc /usr/local/lib/pkgconfig
# install -d /usr/local/lib
# ln -f -s libx264.so.157 /usr/local/lib/libx264.so
# install -m 755 libx264.so.157 /usr/local/lib
# 抑或,不建议使用如下,会将include目录,lib(xx.so)目录,pkgconfg目录安装到/usr/local/x264目录下,而上面是将文件安装到系统目录下
./configure --prefix=/usr/local/x264 --enable-shared --disable-asm
make -j8
# 必须使用sudo 否则失败
sudo make install