可以通过两种方法安装。
一,使用brew来安装
//下载安装ffmpeg
$ brew install ffmpeg
//删除ffmpeg
$ brew remove ffmpeg
二,直接通过源码来安装
从官方下载源码
下载完成后,到源码路径下,执行如下命令,
$ ./configure --prefix=/usr/local/ffmpeg --enable-debug=3 --disable-static --enable-shared --enable-ffplay
其中 --prefix=后面跟的是ffmpeg安装路径,你也可以自己指定位置。
--enable-debug=3是打开debug模式,
--disable-static --enable-shared是指定生成动态库。
--enable-ffplay添加ffplay工具,手动编译新版本默认没带ffplay。所以编译的时候开启一下。
执行完后如果出现如下提示
image.png
要么按它说的更新或者安装masm/yasm后,再执行刚才的指令
$ brew install yasm
要么使用 --disable-x86asm,也就是在刚刚的指令后面拼接上这条指令
$ ./configure --prefix=/usr/local/ffmpeg --enable-debug=3 --disable-static --enable-shared --enable-ffplay --disable-x86asm
然后是执行
$ make -j 4//4相当于指定4核去工作
$ make install
当执行了make install指令后,可能会出现如下错误,那是因为权限问题,执行sudo make install输入电脑密码就可以了。这里需要root权限才行。
image.png
三,配置环境变量PATH
使用brew安装的软件都是在/usr/local/Cellar目录下。
刷新配置source ~/.bash_profile
bash_profile文件是在user目录下面
1,可以直接命令行编辑
//1,打开bash_profile
$ vim ~/.bash_profile
//2,输入i,进入编辑模式,配置ffmpeg的环境变量
$ export PATH=/usr/local/ffmpeg/bin:$PATH
//3,点击esc,退出编辑模式,输入:wq,保存退出。
$ :wq
//4,执行source,刷新配置
$ source ~/.bash_profile
2,或者可以手动打开bash_profile文件编辑
//1,如果没有bash_profile文件创建,
$ touch ~/.bash_profile
//2,打开bash_profile文件
$ open ~/.bash_profile
//3,在文件中追加路径,`/usr/local/Cellar/ffmpeg/4.3_2`为ffmpeg的路径。
$ export PATH=/usr/local/Cellar/ffmpeg/4.3_2/bin:$PATH
//4,然后保存并刷新
$ source ~/.bash_profile
如果可以执行ffmpeg -version了说明可以了。
四,关于ffplay
1,安装SDL
最新版本编译默认ffplay是关闭的。如果是直接在./configure中加--enable-ffplay,可能会提示SDL的缺失。
那么要先安装SDL。
4.0之后需要的SDL2.0版本,下载地址。
下载完后直接解压或者用命令tar -xvf解压。
进入到解压后的文件夹目录下执行命令。
$ ./configure
$ make -j8
$ sudo make install
安装完毕之后,再次执行之前编译./confiure的命令,并且后面拼接上--enable-ffplay。也就是如下的样子
$ ./configure --prefix=/usr/local/ffmpeg --enable-debug=3 --disable-static --enable-shared --enable-ffplay
$ make -j8
$ sudo make install
依次执行完毕后,没问题的话就算是编译完成了。
2,编辑的时候遇到的其他问题:
配置环境变量的时候编辑了.bash_profile 文件,然后去执行source .bash_profile刷新配置的时候报错如下:
$ .bash_profile:export:30: not valid in this context: https://storage.flutter-io.cn
原因是上一次编辑配置其他环境的时候FLUTTER_STORAGE_BASE_URL=后面多了个空格,去掉就可以了。
3,直接在命令行输入ffmpeg指令报错segmentation fault,是因为环境变量没配置成功。重新配置一下就可以了。
segmentation fault ffmpeg -version