篮之新喜 发表于 2024-12-6 06:03:12

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就行,这个不多说了)
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
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

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: linux下ffmpeg安装