0


linux下ffmpeg安装

前言

虽然市面上好多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
标签: linux ffmpeg 运维

本文转载自: https://blog.csdn.net/sulier998/article/details/141888002
版权归原作者 sulier998 所有, 如有侵权,请联系我们删除。

“linux下ffmpeg安装”的评论:

还没有评论