linux下ffmpeg安装

打印 上一主题 下一主题

主题 802|帖子 802|积分 2416

媒介

虽然市面上好多ffmpeg安装,但是有的人是跳过了一些依靠大概依靠库太老,亦大概是都选择的路径是默认路径,本篇安装相对比力完备、中途不会遇到杂七杂八问题(有解决方案)以及安装路径自由发挥。
备注:由于我用的都是root用户权限,所以至始至终不用sudo,各位需求不一,看个人
以下内容险些以FFMPEG_THIRD目次为基准,不要完全赋值我的路径,自己参考修改
1.下载ffmpeg

  1. git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
复制代码
2.依靠的第三方

个人目次放置(供参考)

  1. ├── ffmpeg_src          //ffmpeg源码解压后目录
  2. ├── x264_src            //x264源码解压后目录
  3. ├── x265_src            //x265源码解压后目录
  4. ├── lame_src            //libmp3lame源码解压后目录
  5. ├── nasm_src            //nasm源码解压后目录
  6. ├── openssl             //openssl安装目录
  7. ├── openssl_src         //openssl源码解压后目录
  8. ├── rtmpdump_src        //rtmp源码解压后目录
  9. └── ffmpeg_third        //第三方库安装目录
  10.     ├── bin
  11.     ├── include
  12.     ├── lib
  13.     ├── man
  14.     ├── sbin
  15.     └── share
复制代码
目次准备

自己创建第三方依靠库安装目次FFMPEG_THIRD并且添加到编译环境变量中,进入运行用户下(选择很紧张,别到时候自己安装运行用户都不对应)的 .bashrc文件,在文件末了增加环境变量,末了source下就可用了,方便我们后续利用
  1. #vi ~/.bashrc
  2. ----------文件内------------
  3. .
  4. .
  5. .
  6. export FFMPEG_THIRD=/home/sulier/work/AudioVedio/ffmpeg_third
  7. export FFMPEG_THIRD_BIN=/home/sulier/work/AudioVedio/ffmpeg_third/bin
  8. export PATH=$FFMPEG_THIRD_BIN:$PATH
  9. export PKG_CONFIG_PATH=/home/sulier/work/AudioVedio/ffmpeg_third//lib/pkgconfig/:$PKG_CONFIG_PATH
  10. ----------------------------
  11. #source ~/.bashrc
复制代码
SDL(体系apt下载)

由于我的是ubuntu的所以用apt-get命令(遇到[Y/N]输入y就行,这个不多说了)
  1. apt-get install libsdl2-dev
  2. apt-get install libsdl2-image-dev
  3. apt-get install libsdl2-mixer-dev
  4. apt-get install libsdl2-ttf-dev
  5. apt-get install libsdl2-gfx-dev
复制代码

nasm(压缩文件)

x264编译错误如下
  1. root@ubuntu:/home/sulier/work/AudioVedio/x264_src# ./configure --prefix=$FFMPEG_THIRD --enable-shared --enable-static
  2. Found no assembler
  3. Minimum version is nasm-2.13
  4. If you really want to compile without asm, configure with --disable-asm.
复制代码
 大概我们通过体系安装nasm但是版本太低时编译后续的x264编译不过
  1. root@ubuntu:/home/sulier/work/AudioVedio/x264_src# nasm --v
  2. NASM version 2.11.08
复制代码
所以我们需要先卸载原来的nasm
  1. apt-get remove nasm
复制代码
然后在官网 NASM上下载,比如我用的是最新版本2.16.03目次路径在Index of /pub/nasm/releasebuilds/2.16.03
之后解压
  1. # tar -xf nasm-2.16.03.tar.gz
复制代码
然后编译安装在我们FFMPEG_THIRD目次下
  1. # ./configure --prefix=$FFMPEG_THIRD
  2. # make
  3. # make install
复制代码
x264(git下载)

下载x264
  1. git clone https://code.videolan.org/videolan/x264.git
复制代码
 一样编译安装在我们FFMPEG_THIRD目次下
  1. # ./configure --prefix=$FFMPEG_THIRD --enable-shared --enable-static
  2. # make
  3. # make install
复制代码
x265(压缩文件)

原先的x265官网不让下载了
现在这个网站可以下载
  1. http://ftp.videolan.org/pub/videolan/x265/
复制代码
我下载的是3.2版本
由于x265用的是cmake、ccmake、numa,如果没安装,我们需要安装下
  1. # apt-get cmake
  2. # apt-get install cmake-curses-gui
  3. # apt-get install libnuma-dev
复制代码
 解压后编译
  1. # cd build/linux/
  2. # ./make-Makefiles.bash
  3. 需要修改CMAKE_INSTALL_PREFIX值(enter键进入编辑,esc进入命令模式)
  4. 为我们$FFMPEG_THIRD对应的值,
  5. 但是这里就不能用变量了,用绝对路径
  6. 之后编辑后c表示配置,然后g保存
  7. # make
  8. # make install
  9. root@ubuntu:/home/sulier/work/AudioVedio/x265_src/build/linux# make install
  10. [ 63%] Built target common
  11. [ 85%] Built target encoder
  12. [ 86%] Built target x265-shared
  13. [ 87%] Built target x265-static
  14. [100%] Built target cli
  15. Install the project...
  16. -- Install configuration: "Release"
  17. -- Installing: /home/sulier/work/AudioVedio/ffmpeg_third/lib/libx265.a
  18. -- Installing: /home/sulier/work/AudioVedio/ffmpeg_third/include/x265.h
  19. -- Installing: /home/sulier/work/AudioVedio/ffmpeg_third/include/x265_config.h
  20. -- Installing: /home/sulier/work/AudioVedio/ffmpeg_third/lib/libx265.so.179
  21. -- Installing: /home/sulier/work/AudioVedio/ffmpeg_third/lib/libx265.so
  22. -- Installing: /home/sulier/work/AudioVedio/ffmpeg_third/lib/pkgconfig/x265.pc
  23. -- Installing: /home/sulier/work/AudioVedio/ffmpeg_third/bin/x265
  24. 这里可以看到是不是我们想要的路径,哪怕错了可以再从./make-Makefiles.bash命令重新来下,编辑保存没错就是正确的
复制代码


libmp3lame(压缩文件)

下载网址
  1. https://sourceforge.net/projects/lame/files/lame/
复制代码
 我下载的是目前最新的3.100版本
解压后进入解压目次,然后配置编译
  1. # ./configure --prefix=$FFMPEG_THIRD --enable-shared --enable-static
  2. # make
  3. # make install
复制代码
openssl(压缩文件)

下载地址
  1. https://github.com/openssl/openssl/releases/download/
复制代码
安装下libssl-dev,否则后续rtmp安装可能时可能链接不到
  1. # apt-get install libssl-dev
复制代码
配置并编译安装,由于体系自带了低版本的openssl,所以我们这里安装目次没有利用默认路径,往后好更换
  1. # ./config --prefix=/home/sulier/work/AudioVedio/openssl --openssldir=/home/sulier/work/AudioVedio/openssl -fPIC zlib
  2. # make
  3. # make install
复制代码
 备份老的openssl,由于我这边只有/usr/bin目次下有一个
  1. root@ubuntu:/usr/bin# mv openssl old_openssl
复制代码
由于openssl好多时候都用到了,我们需要创建软连接以及库连接刷新
  1. # ln -s /home/sulier/work/AudioVedio/openssl/bin/openssl /usr/bin/openssl
  2. # ln -s /home/sulier/work/AudioVedio/openssl/include/openssl /usr/include/openssl
  3. # echo "/home/sulier/work/AudioVedio/openssl/lib64" >> /etc/ld.so.conf.d/openssl.conf
  4. # ldconfig
复制代码
末了查看下
  1. root@ubuntu:/home/sulier/work/AudioVedio# openssl version
  2. 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行(删掉了括号) 
  1. # vi /usr/include/openssl/macros.h
  2. ----------------文件内----------------
  3. 130 # define OPENSSL_CONFIGURED_API 30300
  4. 131 # ifndef OPENSSL_API_LEVEL
  5. 132 #  if OPENSSL_CONFIGURED_API > 0
  6. 133 #   define OPENSSL_API_LEVEL OPENSSL_CONFIGURED_API
  7. 134 #  else
  8. 135 #   define OPENSSL_API_LEVEL \
  9. 136            (OPENSSL_VERSION_MAJOR * 10000 + OPENSSL_VERSION_MINOR * 100)
  10. 137 #  endif
  11. 138 # endif
  12. 139
  13. 140 # if OPENSSL_API_LEVEL > OPENSSL_CONFIGURED_API
  14. 141 #  error "The requested API level higher than the configured API compatibility level"
  15. 142 # endif
  16. --------------------------------------
复制代码


rtmp(git下载)

官网:
  1. http://rtmpdump.mplayerhq.hu
复制代码
下载方法,目前我用的是2.4版本
  1. # git clone git://git.ffmpeg.org/rtmpdump
复制代码
留意:这里需要安装openssl的,网上有些是修改makefile中CRYPTO值,利用GNUTLS,我们就还是利用初始的openssl吧
这里编译rtmp前有两个地方需要添加
第一处是代码目次下Makefile文件大概25行的样子LDFLAGS增加一个-ldl
  1. # vi Makefile  
  2. 25 LDFLAGS=-Wall $(XLDFLAGS) -ldl
复制代码
第二处是librtmp/Makefile文件大概33行的样子LIB_OPENSSL增加库路径(我们安装的openssl路径位置)
  1. # vi librtmp/Makefile  
  2. 33 LIB_OPENSSL=-lssl -lcrypto $(LIBZ) -L/home/sulier/work/AudioVedio/openssl/lib64
复制代码
可以默认安装,我们这里是安装再我们FFMPEG_THIRD目次下
  1. # make
  2. # make install prefix=$FFMPEG_THIRD
复制代码
3.编译ffmpeg

进入目次编译
  1. # cd ffmpeg_src
  2. # ./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
  3. # make
  4. # make install
复制代码
4. 添加库到体系连接库路径

  1. # echo "/home/sulier/work/AudioVedio/ffmpeg_third/lib/" >> /etc/ld.so.conf.d/ffmpeg.conf
  2. # ldconfig
复制代码
5.验证

  1. root@ubuntu:/etc/ld.so.conf.d# ffmpeg -version
  2. ffmpeg version N-116847-g4f7aeff Copyright (c) 2000-2024 the FFmpeg developers
  3. built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.12) 20160609
  4. 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
  5. libavutil      59. 35.100 / 59. 35.100
  6. libavcodec     61. 11.100 / 61. 11.100
  7. libavformat    61.  5.101 / 61.  5.101
  8. libavdevice    61.  2.100 / 61.  2.100
  9. libavfilter    10.  2.102 / 10.  2.102
  10. libswscale      8.  2.100 /  8.  2.100
  11. libswresample   5.  2.100 /  5.  2.100
  12. libpostproc    58.  2.100 / 58.  2.100
复制代码


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

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

篮之新喜

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表