前言
虽然市面上好多ffmpeg安装,但是有的人是跳过了一些依赖或者依赖库太老,亦或者是都选择的路径是默认路径,本篇安装相对比较完整、中途不会遇到杂七杂八问题(有解决方案)以及安装路径自由发挥。
备注:因为我用的都是root用户权限,所以至始至终不用sudo,各位需求不一,看个人
以下内容几乎以****FFMPEG_THIRD目录为基准,不要完全赋值我的路径,自己参考修改
1.下载ffmpeg
git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
2.依赖的第三方
个人目录放置(供参考)
├── ffmpeg_src //ffmpeg源码解压后目录
├── x264_src //x264源码解压后目录
├── x265_src //x265源码解压后目录
├── lame_src //libmp3lame源码解压后目录
├── nasm_src //nasm源码解压后目录
├── openssl //openssl安装目录
├── openssl_src //openssl源码解压后目录
├── rtmpdump_src //rtmp源码解压后目录
└── ffmpeg_third //第三方库安装目录
├── bin
├── include
├── lib
├── man
├── sbin
└── share
目录准备
自己创建第三方依赖库安装目录FFMPEG_THIRD并且添加到编译环境变量中,进入运行用户下(选择很重要,别到时候自己安装运行用户都不对应)的 .bashrc文件,在文件最后增加环境变量,最后source下就可用了,方便我们后续使用
#vi ~/.bashrc
----------文件内------------
.
.
.
export FFMPEG_THIRD=/home/sulier/work/AudioVedio/ffmpeg_third
export FFMPEG_THIRD_BIN=/home/sulier/work/AudioVedio/ffmpeg_third/bin
export PATH=$FFMPEG_THIRD_BIN:$PATH
export PKG_CONFIG_PATH=/home/sulier/work/AudioVedio/ffmpeg_third//lib/pkgconfig/:$PKG_CONFIG_PATH
----------------------------
#source ~/.bashrc
SDL(系统apt下载)
因为我的是ubuntu的所以用apt-get命令(遇到[Y/N]输入y就行,这个不多说了)
apt-get install libsdl2-dev
apt-get install libsdl2-image-dev
apt-get install libsdl2-mixer-dev
apt-get install libsdl2-ttf-dev
apt-get install libsdl2-gfx-dev
nasm(压缩文件)
x264编译错误如下
root@ubuntu:/home/sulier/work/AudioVedio/x264_src# ./configure --prefix=$FFMPEG_THIRD --enable-shared --enable-static
Found no assembler
Minimum version is nasm-2.13
If you really want to compile without asm, configure with --disable-asm.
也许我们通过系统安装nasm但是版本太低时编译后续的x264编译不过
root@ubuntu:/home/sulier/work/AudioVedio/x264_src# nasm --v
NASM version 2.11.08
所以我们需要先卸载原来的nasm
apt-get remove nasm
然后在官网 NASM上下载,比如我用的是最新版本2.16.03目录路径在Index of /pub/nasm/releasebuilds/2.16.03
之后解压
# tar -xf nasm-2.16.03.tar.gz
然后编译安装在我们FFMPEG_THIRD目录下
# ./configure --prefix=$FFMPEG_THIRD
# make
# make install
x264(git下载)
下载x264
git clone https://code.videolan.org/videolan/x264.git
一样编译安装在我们FFMPEG_THIRD目录下
# ./configure --prefix=$FFMPEG_THIRD --enable-shared --enable-static
# make
# make install
x265(压缩文件)
原先的x265官网不让下载了
现在这个网站可以下载
http://ftp.videolan.org/pub/videolan/x265/
我下载的是3.2版本
因为x265用的是cmake、ccmake、numa,如果没安装,我们需要安装下
# apt-get cmake
# apt-get install cmake-curses-gui
# apt-get install libnuma-dev
解压后编译
# cd build/linux/
# ./make-Makefiles.bash
需要修改CMAKE_INSTALL_PREFIX值(enter键进入编辑,esc进入命令模式)
为我们$FFMPEG_THIRD对应的值,
但是这里就不能用变量了,用绝对路径
之后编辑后c表示配置,然后g保存
# make
# make install
root@ubuntu:/home/sulier/work/AudioVedio/x265_src/build/linux# make install
[ 63%] Built target common
[ 85%] Built target encoder
[ 86%] Built target x265-shared
[ 87%] Built target x265-static
[100%] Built target cli
Install the project...
-- Install configuration: "Release"
-- Installing: /home/sulier/work/AudioVedio/ffmpeg_third/lib/libx265.a
-- Installing: /home/sulier/work/AudioVedio/ffmpeg_third/include/x265.h
-- Installing: /home/sulier/work/AudioVedio/ffmpeg_third/include/x265_config.h
-- Installing: /home/sulier/work/AudioVedio/ffmpeg_third/lib/libx265.so.179
-- Installing: /home/sulier/work/AudioVedio/ffmpeg_third/lib/libx265.so
-- Installing: /home/sulier/work/AudioVedio/ffmpeg_third/lib/pkgconfig/x265.pc
-- Installing: /home/sulier/work/AudioVedio/ffmpeg_third/bin/x265
这里可以看到是不是我们想要的路径,哪怕错了可以再从./make-Makefiles.bash命令重新来下,编辑保存没错就是正确的
libmp3lame(压缩文件)
下载网址
https://sourceforge.net/projects/lame/files/lame/
我下载的是目前最新的3.100版本
解压后进入解压目录,然后配置编译
# ./configure --prefix=$FFMPEG_THIRD --enable-shared --enable-static
# make
# make install
openssl(压缩文件)
下载地址
https://github.com/openssl/openssl/releases/download/
安装下libssl-dev,不然后续rtmp安装可能时可能链接不到
# apt-get install libssl-dev
配置并编译安装,因为系统自带了低版本的openssl,所以我们这里安装目录没有使用默认路径,往后好替换
# ./config --prefix=/home/sulier/work/AudioVedio/openssl --openssldir=/home/sulier/work/AudioVedio/openssl -fPIC zlib
# make
# make install
备份老的openssl,因为我这边只有/usr/bin目录下有一个
root@ubuntu:/usr/bin# mv openssl old_openssl
因为openssl好多时候都用到了,我们需要创建软连接以及库连接刷新
# ln -s /home/sulier/work/AudioVedio/openssl/bin/openssl /usr/bin/openssl
# ln -s /home/sulier/work/AudioVedio/openssl/include/openssl /usr/include/openssl
# echo "/home/sulier/work/AudioVedio/openssl/lib64" >> /etc/ld.so.conf.d/openssl.conf
# ldconfig
最后查看下
root@ubuntu:/home/sulier/work/AudioVedio# openssl version
OpenSSL 3.3.2 3 Sep 2024 (Library: OpenSSL 3.3.2 3 Sep 2024)
**这里会有一个bug(不然后续编译rtmp的时候rtmp.c文件编译不过),我们可以规避下,举例3.3.2版本的openssl主要是增加了130行以及修改了133行(删掉了括号) **
# vi /usr/include/openssl/macros.h
----------------文件内----------------
130 # define OPENSSL_CONFIGURED_API 30300
131 # ifndef OPENSSL_API_LEVEL
132 # if OPENSSL_CONFIGURED_API > 0
133 # define OPENSSL_API_LEVEL OPENSSL_CONFIGURED_API
134 # else
135 # define OPENSSL_API_LEVEL \
136 (OPENSSL_VERSION_MAJOR * 10000 + OPENSSL_VERSION_MINOR * 100)
137 # endif
138 # endif
139
140 # if OPENSSL_API_LEVEL > OPENSSL_CONFIGURED_API
141 # error "The requested API level higher than the configured API compatibility level"
142 # endif
--------------------------------------
rtmp(git下载)
官网:
http://rtmpdump.mplayerhq.hu
下载方法,目前我用的是2.4版本
# git clone git://git.ffmpeg.org/rtmpdump
注意:这里需要安装openssl的,网上有些是修改makefile中CRYPTO值,使用GNUTLS,我们就还是使用初始的openssl吧
这里编译rtmp前有两个地方需要添加
第一处是代码目录下Makefile文件大概25行的样子LDFLAGS增加一个-ldl
# vi Makefile
25 LDFLAGS=-Wall $(XLDFLAGS) -ldl
第二处是librtmp/Makefile文件大概33行的样子LIB_OPENSSL增加库路径(我们安装的openssl路径位置)
# vi librtmp/Makefile
33 LIB_OPENSSL=-lssl -lcrypto $(LIBZ) -L/home/sulier/work/AudioVedio/openssl/lib64
可以默认安装,我们这里是安装再我们FFMPEG_THIRD目录下
# make
# make install prefix=$FFMPEG_THIRD
3.编译ffmpeg
进入目录编译
# cd ffmpeg_src
# ./configure --prefix=$FFMPEG_THIRD --enable-shared --enable-static --enable-gpl --enable-pthreads --enable-libx264 --enable-libx265 --enable-libmp3lame --enable-librtmp --extra-cflags=-I$FFMPEG_THIRD/include --extra-ldflags=-L$FFMPEG_THIRD/lib
# make
# make install
4. 添加库到系统连接库路径
# echo "/home/sulier/work/AudioVedio/ffmpeg_third/lib/" >> /etc/ld.so.conf.d/ffmpeg.conf
# ldconfig
5.验证
root@ubuntu:/etc/ld.so.conf.d# ffmpeg -version
ffmpeg version N-116847-g4f7aeff Copyright (c) 2000-2024 the FFmpeg developers
built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.12) 20160609
configuration: --prefix=/home/sulier/work/AudioVedio/ffmpeg_third --enable-shared --enable-static --enable-gpl --enable-pthreads --enable-libx264 --enable-libx265 --enable-libmp3lame --enable-librtmp --extra-cflags=-I/home/sulier/work/AudioVedio/ffmpeg_third/include --extra-ldflags=-L/home/sulier/work/AudioVedio/ffmpeg_third/lib
libavutil 59. 35.100 / 59. 35.100
libavcodec 61. 11.100 / 61. 11.100
libavformat 61. 5.101 / 61. 5.101
libavdevice 61. 2.100 / 61. 2.100
libavfilter 10. 2.102 / 10. 2.102
libswscale 8. 2.100 / 8. 2.100
libswresample 5. 2.100 / 5. 2.100
libpostproc 58. 2.100 / 58. 2.100
版权归原作者 sulier998 所有, 如有侵权,请联系我们删除。