优先使用自带的lib库,已经经过测试没有问题!如果出现问题,可以参考以下步骤自己手动编译lib库。
-
Linux
1.gcc,make
2.cmake
3.nasm
4.yasm
5.pkg-config -
Windows
1.msys2 + mingw64
2.cmake(使用pacman安装的cmake不支持Mingw)
3.nasm
4.yasm
5.pkg-config
Android版本在另外一个文件说明,点击这里跳转
jrtplib下载地址
jthread下载地址
里面自带编译教程,就不说了
直接去官网下载,我自己试过编译,不过没成功,官网地址:https://www.libsdl.org/
下载地址
Linux系统编译的话就比较方便,直接进入到根目录,然后输入:
- cmake ./
- make -j8
Windows下则需要一点点的修改,如果环境变量没有设置好,则需要在根目录下的CMakeLists.txt添加下面三行
路径需要修改成自己的msys安装路径
set(CMAKE_C_FLAGS "-g -Wall -I /d/msys64/mingw64/include -L /d/msys64/mingw64/lib")
set(CMAKE_CXX_FLAGS "-g -Wall -I /d/msys64/mingw64/include -L /d/msys64/mingw64/lib")
set(CMAKE_CXX_COMPILER "g++")
然后从控制台进入到根目录输入下面的命令
- cmake -G "MinGW Makefiles" -DDEBUG:STRING=OFF
生成makefile后直接make就可以了,不过没有make install,需要手动copy
下载地址
,配置好cmake就可以用cmake编译了
下载地址,没有这个库编译的时候将会提示缺少头文件 安装步骤在下载页面
编译这个就有点复杂了,我们需要定制一个ffmpeg动态链接库,需要x264,x265,libfdk-aac,libmfx(qsv需要)
x264,x265,libfdk-aac的编译方法,给一个帖子大家参考一下:https://www.cnblogs.com/yaoz/p/6944942.html
libmfx的编译很简单,只需要下面几步
- ./configure
- make clean
- make -j8
- make install
ffmpeg的编译:
PKG_CONFIG_PATH路径记得修改为自己的
- Windows下的编译:
PKG_CONFIG_PATH="/usr/local/lib/pkgconfig" \
./configure \
--arch=x86_64 \
--host-os=win64 \
--pkg-config-flags="--static" \
--extra-cflags="-I/usr/local/include" \
--extra-ldflags="-L/usr/local/lib" \
--enable-pthreads \
--disable-w32threads \
--disable-os2threads \
--disable-encoders \
--disable-decoders \
--disable-parsers \
--disable-muxers \
--disable-demuxers \
--disable-protocols \
--disable-filters \
--disable-bsfs \
--disable-doc \
--disable-static \
--enable-shared \
--enable-libfdk-aac \
--enable-libx264 \
--enable-libx265 \
--enable-libmfx \
--enable-decoder=hevc \
--enable-decoder=hevc_qsv \
--enable-decoder=hevc_cuvid \
--enable-decoder=h264 \
--enable-decoder=h264_qsv \
--enable-decoder=h264_cuvid \
--enable-decoder=aac \
--enable-decoder=aac_fixed \
--enable-decoder=aac_latm \
--enable-decoder=libfdk_aac \
--enable-encoder=nvenc \
--enable-encoder=libx265 \
--enable-encoder=hevc_qsv \
--enable-encoder=hevc_nvenc \
--enable-encoder=nvenc_hevc \
--enable-encoder=libx264 \
--enable-encoder=libx264rgb \
--enable-encoder=h264_qsv \
--enable-encoder=h264_nvenc \
--enable-encoder=nvenc_h264 \
--enable-encoder=libfdk_aac \
--enable-parser=aac \
--enable-parser=aac_latm \
--enable-parser=hevc \
--enable-demuxer=aac \
--enable-muxer=hevc \
--enable-filter=crop \
--enable-gpl \
--enable-nonfree
*因为添加了NVENC和NVDEC,所以去掉了--enable-encoder=aac,带上这个会链接出错
- Linux下的编译:
PKG_CONFIG_PATH="$HOME/Desktop/build-linux/lib/pkgconfig" \
./configure \
--prefix="$HOME/Desktop/ffmpeg-linux" \
--pkg-config-flags="--static" \
--arch=x86_64 \
--disable-encoders \
--disable-decoders \
--disable-parsers \
--disable-muxers \
--disable-demuxers \
--disable-bsfs \
--disable-protocols \
--disable-filters \
--disable-doc \
--disable-static \
--disable-outdev=oss \
--disable-indev=oss \
--enable-shared \
--enable-libfdk-aac \
--enable-libx264 \
--enable-libx265 \
--enable-libmfx \
--enable-decoder=hevc \
--enable-decoder=hevc_qsv \
--enable-decoder=h264 \
--enable-decoder=h264_qsv \
--enable-decoder=aac \
--enable-decoder=aac_fixed \
--enable-decoder=aac_latm \
--enable-decoder=libfdk_aac \
--enable-encoder=libx265 \
--enable-encoder=hevc_qsv \
--enable-encoder=libx264 \
--enable-encoder=libx264rgb \
--enable-encoder=h264_qsv \
--enable-encoder=libfdk_aac \
--enable-encoder=aac \
--enable-parser=aac \
--enable-parser=aac_latm \
--enable-parser=hevc \
--enable-demuxer=aac \
--enable-muxer=hevc \
--enable-filter=crop \
--enable-gpl \
--enable-nonfree
*Linux的还没有更新
可能大家在编译ffmpeg的时候出现各种问题,我简单罗列一下我遇到过的问题,大部分是在Windows下编译出现的,Linux是一步就完成了
- 在我没有设置disable-bsfs的时候,编译是会在avcodec的时候出现链接错误,需要自己调用gcc生成,去掉这个之后就可以直接编译成功了
- 还有一个qsv的问题,更新集显驱动就可以了
- 在Linux系统编译时,可能会出现下面这种情况
在x265.pc文件里的Libs.private一行添加-lpthread,如下图所示:
- 还有一些问题我没有记录下来,如果遇到一些包not found的话,可能是pkg-config的问题,也可能是包编译错误的问题。遇到问题多谷歌多百度就很容易解决了。
- 说明一下gcc链接的问题,把make的出错的编译信息记下来,然后调用下面的命令,按情况添加dll
gcc *.o -luuid -lole32 -liconv -L/usr/local/bin -lavutil-56 -lavfilter-7 -lpostproc-55 -lswresample-3 -lswscale-5 -lfdk-aac-1 -llibx265 -llibx264-157 -L/c/"Program Files (x86)"/IntelSWTools/"Intel(R) Media SDK 2019 R1"/"Software Development Kit"/bin/x64/ -llibmfxsw64 -shared -o avcodec-58.dll -Wl,--output-def,avcodec-58.def,--out-implib,avcodec-58.a
把出错的编译信息里面的.o文件添加到gcc后面就可以链接成功了