x264 x265 ffmpeg移植

这是一个一键式库移植脚本,主要参考https://www.cnblogs.com/schips/p/12195647.html,因为无法直接使用,做了一些修改。

#!/bin/shBASE=`pwd`
BUILD_HOST=arm-ca9-linux-gnueabihf
OUTPUT_PATH=${BASE}/installOTHER_LIB=${OUTPUT_PATH}/__all_without_ffmpegset_env(){export CROSS_COMPILE=/opt/ivot/arm-ca9-linux-gnueabihf-6.5/bin/arm-ca9-linux-gnueabihf-AS=${CROSS_COMPILE}asAR=${CROSS_COMPILE}arNM=${CROSS_COMPILE}nmCC=${CROSS_COMPILE}gccGG=${CROSS_COMPILE}g++CXX=${CROSS_COMPILE}c++LD=${CROSS_COMPILE}ldRANLIB=${CROSS_COMPILE}ranlibSTRIP=${CROSS_COMPILE}stripexport AS AR NM CC GG LD RANLIB STRIPexport PATH=$PATH:/opt/ivot/arm-ca9-linux-gnueabihf-6.5/bin
}make_dirs () {#为了方便管理,创建有关的目录cd ${BASE} && mkdir compressed install source -p
}tget () { #try wgetfilename=`basename $1`echo "Downloading [${filename}]..."if [ ! -f ${filename} ];thenwget $1fiecho "[OK] Downloaded [${filename}] "
}download_package () {cd ${BASE}/compressedtget http://download.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-20171212-2245.tar.bz2tget http://ffmpeg.org/releases/ffmpeg-4.0.1.tar.bz2tget http://download.videolan.org/videolan/x265/x265_2.6.tar.gz
}tar_package () {cd ${BASE}/compressedls * > /tmp/list.txtfor TAR in `cat /tmp/list.txt`dotar -xf $TAR -C  ../sourcedonerm -rf /tmp/list.txt
}make_x264() {cd ${BASE}/source/x264*./configure \--prefix=${OUTPUT_PATH}/x264 \--host=${BUILD_HOST} \--enable-shared \--enable-pic \--disable-asmmake -j8 && make install
}make_x265() {cd ${BASE}/source/x265*/buildmkdir arm-x265cd arm-x265# 获取 工具链所在位置GCC_FULL_PATH=`whereis ${BUILD_HOST}-gcc | awk -F: '{ print $2 }' | awk '{print $1}'` # 防止多个结果CROSS_PATH=`dirname ${GCC_FULL_PATH}`touch crosscompile.cmake#echo "set(CROSS_COMPILE_ARM 1)" > crosscompile.cmakeecho "set(CMAKE_SYSTEM_NAME Linux)" > crosscompile.cmakeecho "set(CMAKE_SYSTEM_PROCESSOR arm)" >> crosscompile.cmakeecho "" >> crosscompile.cmakeecho "# specify the cross compiler" >> crosscompile.cmakeecho "set(CMAKE_C_COMPILER ${CROSS_PATH}/${BUILD_HOST}-gcc)" >> crosscompile.cmakeecho "set(CMAKE_CXX_COMPILER ${CROSS_PATH}/${BUILD_HOST}-g++)" >> crosscompile.cmakeecho "set(CMAKE_SHARED_LINKER_FLAGS \"-ldl \${CMAKE_SHARED_LINKER_FLAGS}\")" >> crosscompile.cmakeecho "" >> crosscompile.cmakeecho "# specify the target environment" >> crosscompile.cmakeecho "SET(CMAKE_FIND_ROOT_PATH  ${CROSS_PATH})" >> crosscompile.cmake# 编译安装cmake -DCMAKE_TOOLCHAIN_FILE=crosscompile.cmake -G "Unix Makefiles" \-DCMAKE_C_FLAGS="-fPIC ${CMAKE_C_FLAGS}" -DCMAKE_CXX_FLAGS="-fPIC ${CMAKE_CXX_FLAGS}" \-DCMAKE_SHARED_LINKER_FLAGS="-ldl ${CMAKE_SHARED_LINKER_FLAGS}"  \-DCMAKE_INSTALL_PREFIX=${OUTPUT_PATH}/x265 \../../source && make -j8make install
}
prepare_other_lib () {# 这一个是针对 ffmpeg 方便管理外部库使用的# 核心思想是把 所有的库都放到一起,再让 ffmpeg ld的时候在这里找(而不是添加多行) --extra-cflags="-I${X264_DIR}/include -I${xxx}/include" \cd ${BASE}/install/rm ${OTHER_LIB} -rfls > /tmp/list.txtmkdir ${OTHER_LIB} -pfor sub_dir in `cat /tmp/list.txt`docp ${sub_dir}/* ${OTHER_LIB} -r -vdonerm -rf /tmp/list.txt
}make_ffmpeg() {MYPKGCONFIG=${BASE}/install/x265/lib/pkgconfig/export PKG_CONFIG_PATH=${MYPKGCONFIG}:$PKG_CONFIG_PATHcd ${BASE}/source/ffmpeg*./configure \--prefix=${OUTPUT_PATH}/ffmpeg \--enable-cross-compile \--cross-prefix=${BUILD_HOST}- \--arch=arm \--host-os=linux \--target-os=linux \--cc=${BUILD_HOST}-gcc \--enable-shared \--enable-pic \--enable-gpl \--enable-nonfree \--enable-pthreads \--enable-ffmpeg \--enable-swscale  \--enable-libx264 \--enable-libx265 \--enable-decoder=hevc \--disable-stripping \--disable-ffplay \--disable-doc  --disable-debug --disable-iconv --disable-armv5te --disable-armv6 --disable-armv6t2 \--pkg-config="pkg-config --static" \--extra-cflags=-I${OTHER_LIB}/include \--extra-ldflags=-L${OTHER_LIB}/libmake -j8 && make install
}echo "Using ${BUILD_HOST}-gcc"
make_dirs
download_package
tar_package
set_env
make_x264
make_x265
prepare_other_lib
make_ffmpeg


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部