Ubuntu交叉编译FFmpeg4.4(x264\265)

Ubuntu交叉编译FFmpeg(x264\265)

参考地址:https://blog.csdn.net/qq_30103413/article/details/116987928

1. 预先条件

sudo apt install cmake nasm mingw-w64 mingw-w64-tools gcc-mingw-w64-i686 g++-mingw-w64-i686

2.交叉编译X264

  • 配置并编译,本文只采用了静态链接。
mkidr build_i686
cd build_i686

PREFIX_X264=/home/zst/ffmepg_build/output/x264_i686
../configure --enable-static --enable-win32thread --host=i686-w64-mingw32  --cross-prefix=i686-w64-mingw32- --prefix=${PREFIX_X264}

make
make install

3.交叉编译 X265

参考

  • 在build目录下新建一个文件夹,
    例如"build_i686",再在该目录下新建一个toolchain文件(build.cmake),内容如下:
#!cmake

# this one is important
SET(CMAKE_SYSTEM_NAME Windows)

SET(cross_prefix i686-w64-mingw32-)

# specify the cross compiler
SET(CMAKE_C_COMPILER   ${cross_prefix}gcc)
SET(CMAKE_CXX_COMPILER ${cross_prefix}g++)
SET(CMAKE_RC_COMPILER  ${cross_prefix}windres)
SET(CMAKE_ASM_NASM_COMPILER nasm)

SET(CMAKE_CXX_FLAGS "-static-libgcc -static-libstdc++ -static -O3 -s")
SET(CMAKE_C_FLAGS "-static-libgcc -static-libstdc++ -static -O3 -s")
SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "-static-libgcc -static-libstdc++ -static -O3 -s")
SET(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS "-static-libgcc -static-libstdc++ -static -O3 -s")

  • 采用cmake配置生成工程,并编译
PREFIX_X265=/home/zst/ffmepg_build/output/x265_i686
cmake -DCMAKE_TOOLCHAIN_FILE=build.cmake -DCMAKE_INSTALL_PREFIX=${PREFIX_X265} -DENABLE_SHARED=0 -DENABLE_PIC=1 ../../source 
make 
make install
  • 修改生成的x265.pc,新增-lstdc++ -lgcc -lgcc -static
Libs: -L${libdir} -lx265 -lstdc++ -lgcc -lgcc -static
Libs.private: -lstdc++ -lgcc -lgcc

4.交叉编译 FFMPEG

  • 配置 PKG_CONFIG_PATH, 以便pkg-config能够正确找到x264, x265
export PKG_CONFIG_PATH=${PREFIX_X264}/lib/pkgconfig:${PREFIX_X265}/lib/pkgconfig
  • 配置并编译,生成动态库。(可新建一个目录,例如"build_i686"),添加–extra-ldflags='-static-libgcc’配置去除libgcc_s_dw2-1.dll的依赖
mkdir build_i686
cd build_i686
PREFIX_FFMPEG=/home/zst/ffmepg_build/output/ffmpeg_i686

../configure --arch=x86 --target-os=mingw32 --cross-prefix=i686-w64-mingw32- --enable-libx265 --enable-libx264 --enable-shared --enable-pic --enable-gpl --enable-version3 --extra-ldflags='-static-libgcc' --prefix=${PREFIX_FFMPEG}
make
make install

../configure --arch=x86 --target-os=mingw32 --cross-prefix=i686-w64-mingw32- --enable-libx265 --enable-libx264 --enable-shared --enable-pic --enable-gpl --enable-version3 --extra-ldflags=-static-libgcc --prefix=/home/zst/ffmepg_build/output/ffmpeg_i686 --enable-yasm --disable-nonfree --enable-runtime-cpudetect --disable-gray --disable-swscale-alpha --disable-programs --disable-ffmpeg --disable-ffplay --disable-ffprobe --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-avdevice --enable-avcodec --enable-avformat --enable-avutil --enable-swresample --enable-swscale --disable-postproc --enable-avfilter --disable-avresample --enable-network --disable-d3d11va --disable-dxva2 --disable-vaapi --disable-vdpau --disable-videotoolbox --disable-encoders --enable-encoder=png --disable-decoders --enable-decoder=aac --enable-decoder=aac_latm --enable-decoder=flv --enable-decoder=h264 --enable-decoder='mp3*' --enable-decoder=vp6f --enable-decoder=flac --enable-decoder=hevc --enable-decoder=vp8 --enable-decoder=vp9 --disable-hwaccels --disable-muxers --enable-muxer=mp4 --disable-demuxers --enable-demuxer='ijk*' --enable-demuxer=aac --enable-demuxer=concat --enable-demuxer=data --enable-demuxer=flv --enable-demuxer=hls --enable-demuxer=live_flv --enable-demuxer=mov --enable-demuxer=mp3 --enable-demuxer=mpegps --enable-demuxer=mpegts --enable-demuxer=mpegvideo --enable-demuxer=flac --enable-demuxer=hevc --enable-demuxer=webm_dash_manifest --disable-parsers --enable-parser=aac --enable-parser=aac_latm --enable-parser=h264 --enable-parser=flac --enable-parser=hevc --enable-bsfs --disable-bsf=chomp --disable-bsf=dca_core --disable-bsf=dump_extradata --disable-bsf=hevc_mp4toannexb --disable-bsf=imx_dump_header --disable-bsf=mjpeg2jpeg --disable-bsf=mjpega_dump_header --disable-bsf=mov2textsub --disable-bsf=mp3_header_decompress --disable-bsf=mpeg4_unpack_bframes --disable-bsf=noise --disable-bsf=remove_extradata --disable-bsf=text2movsub --disable-bsf=vp9_superframe --disable-bsf=eac3_core --enable-protocols --enable-protocol=async --disable-protocol=bluray --disable-protocol=concat --disable-protocol=crypto --disable-protocol=ffrtmpcrypt --enable-protocol=ffrtmphttp --disable-protocol=gopher --disable-protocol=icecast --disable-protocol='librtmp*' --disable-protocol=libssh --disable-protocol=md5 --disable-protocol=mmsh --disable-protocol=mmst --disable-protocol='rtmp*' --enable-protocol=rtmp --enable-protocol=rtmpt --disable-protocol=rtp --disable-protocol=sctp --disable-protocol=srtp --disable-protocol=subfile --disable-protocol=unix --disable-devices --disable-filters --disable-iconv --disable-audiotoolbox --disable-videotoolbox --disable-linux-perf --disable-bzlib 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值