大家好,又见面了,我是你们的朋友全栈君。
FFmpeg命令行安装
使用如下命令进行FFmpeg:
sudo apt-get install ffmpeg
FFmpeg源码安装
FFmpeg源码获取
使用如下命令获取ffmpeg的源码:
git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
ubuntu截图
mac截图
ffmpeg编译
使用如下命令指定安装目录:
./configure –prefix=/usr/local/ffmpeg –enable-debug=3 –enable-shared –disable-static –disable-x86asm
使用prefix参数实现安装目录的指定,通常安装在本地/usr/local目录下。
由于之后有调试源码的需求,所以打开debug模式,将–enable-debug设为3.
这条命令会关闭生成静态库,打开生成动态库。 最后会关闭x86asm,这是一个在ubuntu还有mac下都必须做的。
mac截图:
最近在mac下安装了一遍ffmpeg,发现这个参数–disable-x86asm也需要,而且在安装过程中出现一个警告,即上图中所示,但是实践证明暂时不必理会,直接下一步继续编译就可以。
此时会生成一个新的Makefile文件。
打开configure文件查看,实质上prefix参数是传入一个安装目录,如下图所示。
这里圈出的四个文件路径,bin、share、lib、include,就是安装完成后生成产物的主要路径,在下面会再次讲解。
使用如下命令查看全部的ffmpeg编译参数:
./configure –help
使用如下命令实现ffmpeg的编译:
make -j 4
这条命令会调用4个核心并行编译,可以大大提高编译的速度
使用如下命令进行安装:
make install
mac截图:
解决编译后没有ffplay
安装SDL依赖
由于我安装的ffmpeg版本是4.4,所以网上流传的sdl1.2是没有作用的,所以使用如下命令安装SDL2。
sudo apt-get install libsdl2-dev
只有安装完SDL后才能够编译出ffplay,但是除了安装sdl后,还有其他需要处理的地方。
在mac下终端安装sdl2时,需要使用brew,apt-get是ubuntu下的包管理工具,而brew是mac下的包管理工具。 我的默认是没有brew的,所以需要自己进行安装:
代码语言:javascript复制/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
序列号选择中科大的,解决方法来源于此篇博客:链接 使用brew查看sdl2的信息
代码语言:javascript复制brew search sdl2
mac截图:
使用brew安装sdl:
代码语言:javascript复制brew install sdl2
更改config.h文件
在ffmpeg根目录下打开config.h文件,搜索CONFIG_FFPLAY使其值为1,然后在搜索CONFIG_ALSA使其值为1,这是在编译时打开ffplay和alsa的功能。
更改config.mak文件
在ffmpeg目录下的build目录下的config.mak文件,搜索CONFIG_FFPLAY其值设为yes,搜索CONFIG_ALSA其值设为1
mac下在ffbuild目录下的config.mak文件,搜索CONFIG_FFPLAY其值设为yes
重新编译ffmpeg
在修改上面的步骤后重新进行重新编译。
mac截图:
FFmpeg简介
简介
完成了ffmpeg的安装后,接下来进入/usr/local/ffepeg内查看:
可以看见ffmpeg安装完成后主要生成上面提到的4个路径。
bin:存放ffmpeg所有的命令工具
include:存放ffmpeg所有的头文件
lib:存放ffmpeg生成的动态库或者静态库
share:存放ffmpeg相关的文档和例子
bin目录
进入bin目录下存在三个命令工具,依次是ffmpeg、ffplay、ffprode
ffmpeg:可以进行推流、音视频的处理
ffplay:一个播放器,可以进行拉流、播放本地的音视频文件
ffprobe:用于侦测多媒体文件,例如一些格式以及基本信息
在编译时可能少一些工具,例如我的开始时缺少ffplay
include目录
进入include文件,存放所有的ffmpeg头文件,之后进行ffmpeg二次开发使用头文件时进入此目录下寻找,每一个子目录是一个模块。
libavcodec:编解码
libavdevice:管理设备
libavfilter:各种滤镜效果、特效
libavformat:多媒体格式处理
libavutil:一些基本的工具
libswresample:音频重采样
libswscale:视频缩放等一些处理
lib目录
进入lib文件,存放所有生成的ffmpeg动态库/静态库。
以libavcodec为例,libavcodec.so.59.0.100是真正的库,另外两个libavcodec.so.59和libavcodec.so是连接符,使用时根据自己的喜好使用。
如果在移动端使用时也可以生成一个总的静态文件(a文件)。
share目录
进入share目录下,主要是存在一些ffmpeg文档,例如man文档。
再linux下可以使用如下指令查看man手册:
man ls
配置FFmpeg环境
安装完毕在命令行中是不可以直接运行ffmpeg的,除非cd进入其bin路径下,这是因为系统中并没有ffmpeg路径。
ubuntu处理
此时需要将ffmpeg加入进系统的环境中。
使用如下命令打开系统PATH文件:
sudo gedit /etc/profile
打开文件后在文件末尾增加如下语句:
export PATH=$PATH:/usr/local/ffmpeg/bin
保存退出后使用如下命令使其立即生效:
source /etc/profile
此时使用如下命令查看ffmpeg是否安装成功:
ffmpeg –help
出现如下错误:
此时是因为编译生成的这些动态库也没有被包含进系统内,所以显示找不到,由于生成的动态库是在/usr/local/ffmpeg/lib目录下,所以要将该目录放在系统环境下。
使用如下命令打开相关文件:
gedit /etc/ld.so.conf
mac下这个文件是空白的,不知是真空白,还是本来没有,运行命令后创建的,不过不重要。
在此文件另起一行添加如下语句:
/usr/local/ffmpeg/lib
其中/usr/local/ffmpeg就是刚才安装的位置
最后使用命令:
sudo ldconfig
通过在终端下,输入ffmpeg,如果获得有关版本信息则配置成功
mac处理
在mac下默认应该是没有安装gedit的,所以使用如下命令安装:
代码语言:javascript复制brew install gedit
但是提示错误:
Error: python@3.9: the bottle needs the Apple Command Line Tools to be installed. You can install them, if desired, with: xcode-select –install You can try to install from source with: brew install –build-from-source python@3.9
我以为是需要python环境,也没仔细看,就安装python3.8了,因为个人更喜欢3.8,但是依然这个问题,然后才知道是缺少环境。 终端输入以下命令安装:
代码语言:javascript复制xcode-select --install
回车回弹出app store小窗口安装,等待安装过后输入命令安装gedit:
代码语言:javascript复制brew install gedit
使用命令打开配置文件:
代码语言:javascript复制sudo gedit ~/.bash_profile
在末尾加入这条语句,即ffmpeg的bin目录:
代码语言:javascript复制export PATH=$PATH:/usr/local/ffmpeg/bin
然后保存退出。 再执行下面命令让刚配置的环境变量生效:
代码语言:javascript复制source ~/.bash_profile
然后输入下面命令,测试是否成功将ffmpeg加入到系统环境中:
代码语言:javascript复制ffmpeg
mac截图:
完结撒花