Skip to content

Latest commit

 

History

History
179 lines (167 loc) · 6.99 KB

build.md

File metadata and controls

179 lines (167 loc) · 6.99 KB

依赖库的构建

优先使用自带的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

jrtplib下载地址
jthread下载地址
里面自带编译教程,就不说了

SDL2

直接去官网下载,我自己试过编译,不过没成功,官网地址:https://www.libsdl.org/

openfec

下载地址
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

wirehair

下载地址
,配置好cmake就可以用cmake编译了

mfx

下载地址,没有这个库编译的时候将会提示缺少头文件 安装步骤在下载页面

ffmpeg

编译这个就有点复杂了,我们需要定制一个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后面就可以链接成功了