Linux安装ffmpeg

可以先看这篇文章 <<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 

追加部分:

./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  
# 进入该源码目录,默认安装到系统目录  
 ./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 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容