rs1 ccbwd

首页 > 汽车 > 汽车资讯 > 正文

rs1 ccbwd

FFmpeg源码下载肯定是优先去官网下载:官网 ffmpeg.org/download.ht…

打开官网如下:

rs1 ccbwd

可以选择直接下载,或者git命令直接克隆一份,作为开发人员一般都喜欢选择git克隆的方式,这样方便后续更新。

3. FFmpeg编译,安装

3.1 在Mac下编译安装FFmpeg3.1.1 brew 方式安装

在mac下面可以很方便的使用brew install ffmpeg命令直接安装ffmpeg,如果是新手这样安装比较方便快捷,但是这么安装有个弊端就是不能定制化,如果随着你对FFmpeg的深入,你需要使用一些其他的工具,就需要手动编译安装了,通过源码编译的方式,我们可以自己选择定制化。

我们可以先输入brew search ffmpeg

3.1.2 源码编译 方式安装

首先需要下载ffmpeg, 从官网http://ffmpeg.org/download.html下载然后是编译ffmpeg 只需要执行下面3条命令即可:

  1. ./configure -prefix=/usr/local/ffmpeg -enable-debug=3
  2. make -j 4
  3. make install

接下来我们分别执行这3条语句:

  • 执行./configure --prefix=/usr/local/ffmpeg --enable-debug=3 一般我们默认安装在/usr/local/ffmpeg路径下,这个路径可以自由设定,这里我们需要开启debug功能,后面要用到

我们下看看我们下载好的源码目录

你也可以使用./configure --help来查看怎么配置

会打印如下所有选项:

上面包括了很多配置参数,随着我们对ffmpeg的深入,我们也会慢慢了解这些配置参数,刚开始我们只需要知道我们关心的就好了。

例如我们不记得了禁止编译static怎么写的,我们这样查询一下:

同样我们可以查询一下share相关的

这里我设置configure时禁止编译静态库,开启动态库,如下:

执行

输入上面命令后回车,会等待一段时间,这个时候脚本在查询系统所有匹配的库,如果有不匹配的会有提示,如下图,我的配置会报一个错误:

由于我的电脑没有安装yasm库,所以需要先安装一下:安装yasm编译器。安装方法如下:

  1. 下载:yasm的下载链接
  2. 解压:把下载下来的压缩包进行解压
  3. 切换路径: cd yasm-1.3.0
  4. 执行配置: ./configure
  5. 编译:make
  6. 安装:make install(提示:Permission denied,就执行sudo make install)

下面我们下来安装yasm编译器 (1)下载:yasm的下载链接 如果上面的链接下载比较慢,可以从我的百度云盘下载: 链接:pan.baidu.com/s/1oGMcX4HY… 密码:m1k2

相关学习资料推荐,点击下方链接免费报名,先码住不迷路~】

音视频免费学习地址:FFmpeg/WebRTC/RTMP/NDK/Android音视频流媒体高级开发

【免费分享】音视频学习资料包、大厂面试题、技术视频和学习路线图,资料包括(C/C++,Linux,FFmpeg webRTC rtmp hls rtsp ffplay srs 等等)有需要的可以点击788280672加群免费领取~

(2) 解压,这里需要用到本篇博客开篇的准备知识的解压命令tar -zxvf yasm-1.3.0.tar

(3)切换路径:cd yasm-1.3.0

(4)执行配置:./configure

(5)编译:make

(6)安装:make install(提示:Permission denied,就执行sudo make install)

安装了yasm编译器后,我们从新运行一下configure配置:

如果没有报错,则会打印了下面信息:

这样我们已经成功配置了FFmpeg,接下来执行编译

  • 执行make -j 4 这里命令的意思是增加4个内核,并行编译,这样提高编译速度 执行make命令后,接下来需要等待比较长的时间等编译完成,需要耐心

增加权限后,就可以安装成功了。

这样就成功安装到了/usr/local/ffmpeg 目录下面了,我们切换到这个目录查看一下

我们可以看到有四个子目录:bin, include, lib, share

  1. bin目录:存放所有ffmpeg的工具库
  2. include目录: 存放ffmpeg库的所有头文件
  3. lib目录:ffmepg生成的动态库或静态库
  4. share目录:存放文档相关内容和一些demo实例

我们接下来可以进入bin目录执行命令:

正常会有三个子目录,由于我这里没有安装ffplay所以少了一个ffplay这是为什么呢?

因为ffplay实际上是客户端ffplay.c的C程序编译出来的,该ffplay.c需要依赖avdevice模块,而avdevice模块使用了sdl的API,如果你的PC上没有sdl(1.x版本,最常用的是1.2.0版本),那么ffplay就会编译不出来了,所以要想编译出命令行工具ffplay,首先的编译基础库 sdl

  • Mac OS 安装sdl 库

如果没有安装brew的话,要先安装Homebrew

等待一段时间,就安装好了,

然后执行命令:

等待下载并且安装完毕之后,重新执行上述FFmpeg的配置和安装步骤,待make install结束之后,再去bin目录下就可以找到命令行工具ffplay了。

  • 安装完成之后接下来一个很重要的事情就是配置环境变量,如果没有配置,你直接执行ffmpeg命令是会报错的

如果你配置环境变量,则需要每次带上全路径,如下:

接下来配置环境变量

执行命令

在配置文件加入ffmpeg的bin文件夹路径:

然后输入:wq保存退出,再执行下面命令让刚配置的环境变量生效:

在ubuntu操作系统上可以很容易的跟Mac电脑上执行brew install ffmpeg一样可以一行命令执行 通过执行apt 安装如下:

这个的弊端也是无法定制化,如果要定制化还是要手动编译源码安装

安装完成后,我们可以执行ffmpeg -version测试是否安装成功

Centos 操作系统下安装

  • 需安装Nux Dextop Yum 源, 由于CentOS没有官方FFmpeg rpm软件包。但是,我们可以使用第三方YUM源(Nux Dextop)完成此工作。

CentOS 7下:

然后

  • 官网下载:ffmpeg.org/download.ht… 这里下载最新版本
  • 解压安装包

跟上面mac源码安装类似,先进行configure配置,配置过程可能报错,如报下面错误:

则说明yasm编译器没有安装或者太老了,需要先安装新的yasm汇编器。可以使用--disable-yasm禁用这个选项编译,yasm是一款汇编器,并且是完全重写了nasm的汇编环境,接收nasm和gas语法,支持x86和amd64指令集,所以这里安装一下yasm即可

  • Linux下安装yasm 跟Mac下安装相似,都是先下载源码,然后配置,编译,安装

官网下载:yasm.tortall.net/Download.ht…下载后解压,安装

安装成功后,还是和mac安装ffmpeg一样,需要重新配置FFmpeg:

/opt/ffmpeg 是配置的安装目录,可以自己配置路径

  • 然后make进行编译

安装

make install会把ffmpeg相关执行程序、头文件、lib库安装在/opt/ffmpeg/

  • 安装完成后可以进入/opt/ffmpeg/查看

发现有bin,include,lib,share这4个目录bin是ffmpeg主程序二进制目录 include是C/C++头文件目录 lib是编译好的库文件目录 share是文档目录

  • 我们可以进入bin目录执行./ffmpeg -version, 查看当前版本的详细信息 可能会报错:

原因是lib目录未加载到链接到系统库中 系统ld目录列表在/etc/ld.so.conf中,打开文件会发现, 里面引用了/etc/ld.so.conf.d/下面所有的.conf文件,比如mariadb-x86_64.conf解决上面报错,需要创建一个文件并写入lib路径即可执行命令:vim /etc/ld.so.conf.d/ffmpeg.conf

  1. 然后添加一行内容:/opt/ffmpeg/lib
  2. 之后保存并退出,然后执行 ldconfig使配置生效,
  3. 再次执行./ffmpeg -version 显示就正常了

正常会打印如下信息

接下来需要配置环境变量 使用命令vim /etc/profile:编辑写入↓

然后执行命令source /etc/profile:使修改后的配置文件生效

  • 检测ffmpeg是否安装成功 执行which ffmpeg 查看安装路径

3.3 在Window下编译安装FFmpeg

3.3.1 Window编译工具介绍

window下编译FFmpeg相对复杂一下,需要借助Cygwin或MinGW来编译,可以通过MinGW+ MSYS2 或者 VS+ MSYS2来编译ffmpegCygwin(Cygnus Windows)实际上相当于在window安装了一个软件来模拟linux系统MinGW(Minimalist GNU for Windows)是完全模仿了linux的编译工具,相对于将linux的编译工具移植到 window,基于window系统api进行编译,需要提供额外的工具配合使用VS就是 window开发很熟悉了MSYS2(Minimal SYStem 2)3.3.2 Window如何编译ffmpegWindow编译ffmpeg主要有下面三种方式

  • Cygwin直接安装使用: Cygwin编译跟linux编译一模一样的,Cygwin完全就像一个虚拟机模拟了linux操作系统。Cygwin实际上是做了一层linux的api到windows 的api的转换。

但是这样编译出来的ffmpeg的exe程序需要挂在一个Cygwin.dll库才可以运行,因为它有一层转换,所以性能对比原始的window程序有一些损耗。

  • MinGW + MSYS2 : 官方推荐的方式,这种编译出来的就是原生的window程序,不需要和Cygwin一样需要加载一个动态库了。

它的编译方式实际上和linux是一致的

  • VS + MSYS2: 这种就是采用类linux的编译,只是把里面的工具链换成了VS的工具,但是这种方式生成ffplay比较麻烦。

所以一般都选择MinGW + MSYS2 : 官方推荐的方式3.3.2.1 Cygwin 编译FFmpeg

在windows下安装 ffmpeg 的最好方式就是使用 Cygwin 。 Cygwin 是什么呢?简单的说,就是在 Windows上装了一个Linux模拟器。然后你可以在这个模拟器上按照Linux的方式操作 Windows系统。因此,Windows安装了 Cygwin 之后,你就把它当Linux用就可以了。首先,到 Cygwin 官网下载 Cygwin 的可执行程序 setup-x86_64.exe。当然,它是 64位的,如果你现在还在用 32位的,那请在 Cygwin官网上找 32位对应的版本。

  • 首先要安装Cygwin

下载软件后开始安装

选择系统的网络连接方式,跟虚拟机类似

选择镜像安装

选择镜像的对应包

然后选择我们需要的安装包安装,我这里选择 Debug, Devel这两个必须的

此外还需要选择网络

还需要添加wget

此外我们选择一个sdl的库

为了后面编译出ffplay库,最好把下面的红框里面都选上

以上就是一个最小的安装了

需要确保安装了下面这些工具

  1. gcc
  2. g++
  3. make
  4. cmake
  5. automake
  6. gdb
  7. nasm
  8. yasm
  9. wget

选好之后继续下一步

等待安装完成

然后点击图标打开

可以看到一个linux的控制台,如果在window下学习linux命名,就可以在这个控制台练习

这样你就可以敲入linux命令了

如果我们要访问window下的D:盘,可以像下面这样访问:

  • 然后要安装apt-cyg: 这个实际就是Cygwin下的apt工具

apt-cyg与 Ubuntu系统中的 apt一样特别好用,而且使用的方式与 apt也是一个样子的。

我们可以在Cygwin下执行下面的命令就好了

然后执行命令

安装好apt-cyg后,就可以用 apt-cyg instal xxx这样来安装了我们的包了跟Mac下使用brew install xxx一样爽歪歪。

接下来安装pkg-config工具 在Windows系统下,一般不会默认安装该工具,所以在Windows下做实验的同学大都会遇到明明已经装了某个库,但仍然找不到该库的情况。其原因就是没有安装 pkg-config这个工具。 首先确认是否已经将 pkg-config工具安装好了。可以执行下面的命令:

如果提示没有安装,则先将该工具安装好,安装命令如下:

  • 安装好了上面的工具后,接下来就是下载ffmpeg源码了,从官网:ffmpeg.org/download.ht…

然后就是安装了,安装方式跟mac,linux一样

  1. 输入命令:./configure --prefix=/usr/local/ffmpeg 配置环境
  2. 执行命令:make -j 4 编译源码
  3. 执行命令:make install 安装

下载源码通过http直接下载或者git下载

这里我使用git方式,先创建一个ffmpeg目录,然后Git clone代码

下载好源码后,进入目录,然后配置configure

配置完成报告如下:

此时make文件已经生成好了,我们输入make -j 4执行编译

这个编译过程比较长,耐心等待

最好执行make install 安装

安装好之后,我们可以进入/usr/local/ffmpeg目录查看

我们可以看到四个目录:bin,include,lib,share接下来,我们进入bin目录:

可以看到三个exe文件,ffmpeg.exe, ffplayer.exe, ffprobe.exe

我们可以执行ffmpeg.exe

  • 接下来也需要配置环境变量,不然每次要带全路径

输入命令:vi ~/.bashrc 编辑配置文件

按快捷键“Shift+G”跳到文件末尾,在配置文件末尾插入:export PATH=/usr/local/ffmpeg/bin:$PATH

然后按esc键,退出编辑模式,输入:wq 保存退出

然后,我们输入source ~/.bashrc使配置文件生效

最好我们输入env | grep PATH来测试配置文件是否生效

配置好环境变量后,我们直接输入ffmpeg.exe就可以找到了

虽然有了apt-cyg这个神器,但它目前只能安装Linux下的一些常用命令,像我们编译时需要的 x264, x265这些库它是无法找到的。

所以这些库需要我们自己来编译

  • 编译yasm
  1. 下载源码:wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
  2. 解压:tar zxvf yasm-1.3.0.tar.gz
  3. 切换到目录:cd yasm-1.3.0
  4. 配置选项:./configure
  5. 编译安装:make && sudo make install
  • 编译fdk-aac
  1. 下载源码:wget https://jaist.dl.sourceforge.net/project/opencore-amr/fdk-aac/fdk-aac-0.1.6.tar.gz
  2. 解压:tar xvf fdk-aac-0.1.6.tar.gz
  3. 切换到目录: cd fdk-aac-0.1.6
  4. 配置选项:./configure
  5. 编译安装:make && sudo make install
  • 安装lame
  1. 下载源码:wget http://downloads.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz
  2. 解压:tar -xzf lame-3.99.5.tar.gz
  3. 切换到目录:cd lame-3.99.5
  4. 配置选项:./configure
  5. 编译安装:make && sudo make install

注:编译lame可能遇到的问题:

  1. 问题一: 在Cygwin下安装 lame的时候遇到执行 ./configure 失败的情况。如 "error: cannot guess build type; you must sepcify one",对这个问题可以通过下面的步骤来解决: 安装automake。可以通过 which automake来确认automake 是否已经安装。如果没有安装,可以通使用 apt-cyg install automake进行安装。 确认automake当前版本。可执行automake --version获取当前automake的版本号。 将 lame目录下的 config.guess文件替换为 /usr/share/automake-version下的config.guess 文件。 此时,再执行./configure进就可以下成功了。
  2. 问题二: make时出现 "error: '_O_BINARY' undeclared (first use in this function)"的错误,解决办法如下: 打开出错文件 vi ./frontend/lametime.c 将下面这段代码注释掉 /* #elif defined __CYGWIN setmod(fileno(fp), _O_BINARY); */ 再执行make就可以成功了。
  • 安装nasm
  1. 下载源码:wget https://www.nasm.us/pub/nasm/releasebuilds/2.13.03/nasm-2.13.03.tar.gz
  2. 解压:tar xvf nasm-2.13.03.tar.gz
  3. 切换到目录:cd nasm-2.13.03
  4. 配置选项:./configure
  5. 编译安装:make && sudo make install
  • 安装x264
  1. 下载源码: wget mirror.yandex.ru/mirrors/ftp… bunzip2 last_x264.tar.bz2
  2. 解压:tar -vxf last_x264.tar
  3. 切换到目录:cd last_x264
  4. 配置选项:./configure --enable-static --enable-shared --disable-asm --disable-avs
  5. 编译安装: make && sudo make install
  • 安装ffmpeg
  1. 下载源码:wget -c https://ffmpeg.org/releases/ffmpeg-4.0.2.tar.bz2
  2. 解压:bunzip2 ffmpeg-4.0.2.tar.bz2
  3. 切换到目录:cd ffmpeg-4.0.2
  4. 配置选项:./configure --prefix=/usr/local/ffmpeg --enable-gpl --enable-small --arch=x86_64 --enable-nonfree --enable-libfdk-aac --enable-libx264 --enable-filter=delogo --enable-debug --disable-optimizations --enable-shared
  5. 编译安装:make && sudo make install

FFmpeg编译的问题:

  1. 问题一:找不到 fdk-aac库 在编译ffmpeg时,有可能会报找不到fdk_aac库的错误。此时我们应该设置一下 PKG_CONFIG_PATH,指定ffmpeg到哪里找我们安装好的库。 上面通过源码安装的库,默认地址为/usr/local/lib下面,当然你可以通过./configure 中的–prefix参数改变这个目录。 如果使用默认路径的话,可以通过下面的命令来指定编译时去哪里找库export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig 如果你改变了默认路径,则将后面的 /usr/local/lib/pkgconfig修改为你变更后的路径/xxx/.../lib/pkgconfig即可。

参考:李超大神的博客和视频:www.imooc.com/article/247…原文 链接:https://juejin.cn/post/6844904160739999757

备案号:赣ICP备2022005379号
华网(http://www.hbsztv.com) 版权所有未经同意不得复制或镜像

QQ:51985809邮箱:51985809@qq.com