参考网址:
上面网址,详细介绍了ffmpeg的下载地址,编译和使用,具有重要的学习价值
1.准备安装包
x264源码包下载:
下载地址: http://download.videolan.org/pub/videolan/x264/snapshots/
x264-snapshot-20190501-2245-stable.tar.bz2
ffmeg源码包下载:
下载地址: https://ffmpeg.org/releases
ffmpeg-4.1.3.tar.bz2
2.msys2的安装
参考网址:
MSYS2使用教程——win10系统64位安装msys2最新版(msys2-x86_xxxx.exe)_谭青海-CSDN博客
MSYS2环境
下载地址: Index of /distrib/x86_64/
直接下载最新的msys2,否则会出现什么证书之类的错误
双击一路安装,然后运行mingw64.exe,不要运行msys2.exe
mingw32.exe
mingw64.exe:现在基本用64位的
clang64.exe
ucrt64.exe
上面四个的区别
https://www.zhihu.com/question/463666011/answer/1927907983
2.1 问题之错误:数据库 'mingw64' 无效
问题现象:
错误:数据库 'mingw64' 无效 (无效或已损坏的数据库 (PGP 签名))
问题答案:
出现的原因是下载了2018年的包,现在是2021年了,这个包过时了,解决办法如下:
不过在安装别的软件的时候,还是有提示一些别的错误,建议直接下载最新的msys2包
下载当前最新包: msys2-keyring-1_20201002-1-any.pkg.tar.xz
网址https://repo.msys2.org/msys/x86_64/
搜索msys,知道最新的包
pacman -U --config <(echo) msys2-keyring-1_20201002-1-any.pkg.tar.xz
2.2 更新国内源
最后执行: pacman -Syu
2.3 安装常用的工具
pacman -S base-devel pacman -S mingw-w64-x86_64-gcc pacman -S mingw-w64-x86_64-gdb pacman -S yasm pacman -S nasm pacman -S libtool pacman -S m4 pacman -S diffutils
3.编译x264
x264是一个开源的H.264/MPEG-4 AVC视频编码函数库,是最好的有损视频编码器之一。
./configure --enable-static --disable-asm --disable-opencl --disable-cli -- prefix=/home/thirdparty/install/x264
make
make install
4.编译ffmpeg
用的包是ffmpeg-4.1.3.tar.bz2
tar xf ffmpeg-4.1.3.tar.bz2
写了一个自动运行的脚本
#!/bin/bash
#这里定义变量,后续会使用
#此变量用于编译完成之后的库与头文件存放在哪个目录
PREFIX=/home/thirdparty/install/ffmpeg
#执行configure脚本,用于生成makefile
./configure \
--prefix=$PREFIX \
--disable-x86asm \
--enable-shared \
--disable-static \
--enable-gpl \
--enable-libx264 \
--extra-cflags=-I/home/thirdparty/install/x264/include \
--extra-ldflags="-L/home/thirdparty/install/x264/lib -static" \
--pkgconfigdir=/home/thirdparty/install/x264/lib/pkgconfig \
#上面运行脚本生成makefile之后,使用make执行脚本
make clean
make -j 4
make install
makefile编译参考
ffmpeg_build:
cd ffmpeg;
chmod +x ./configure;
chmod +x version.sh;
./configure --disable-vaapi --disable-programs --disable-static --enable-shared --prefix=/home/user/output/;
$(MAKE) -C ffmpeg && $(MAKE) -C ffmpeg install;
ffmpeg_build_cross:
cd ffmpeg;
chmod +x ./configure; chmod +x version.sh;
./configure --enable-cross-compile --cross-prefix=$(CROSS_COMPILER) --arch=arm --target-os=linux --disable-vaapi --disable-programs --disable-static --enable-shared --prefix=$(PATH)/output/$(INSTALL_DIR)/;
$(MAKE) -C ffmpeg && $(MAKE) -C ffmpeg install;