FFmpeg交叉编译、脚本参数配置

一:下载ffmpeg源码到/root/ff目录 使用git下载的话先安装git(github.com/FFmpeg/FFmp… 或者使用wget直接下载相应的版本:官网地址ffmpeg.org/download.ht… ffmpeg.org/releases/ff…

因为之前已经配置共享目录,也可以直接把windows中下载好的直接拷贝过去。 这时去查看ff目录下文件:

执行 tar -xvf ffmpeg-3.4.tar.bz2将文件解压

解压NDK压缩包 zip使用unzip命令,先安装unzip(长文件可以先打出头部名按tab键快捷输入),安装好之后解压

此时查看目录

安装make打包工具,关于make:make工具是一个简化编译工作程序,有了它我们可以进行所谓的“自动化编译”,极大地提高了软件开发的效率。make工具相当于一个Shell,通过解释Makefile的中的命令进行工作。大多数IDE都有这个工具,比如:Visual C++的nmake,Linux下GNU的make。通过makefile文件来描述源程序之间的相互关系并自动维护编译工作

二:下面要准备编译脚本: 配置一些环境变量 #ndk目录 export NDK=/root/ff/android-ndk-r21b #架构下的so库和头文件 export PLATFORM=NDK/platforms/android-21/arch-arm #交叉编译工具 谁来用,用在哪 export TOOLCHAIN=NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64 #指定cpu的输出类型 export CPU=armv7-a #输出的路径 export PREFIX=./android/$CPU

使用env查看环境变量:

这个文件不存在,查看这个路径发现还真没有

因为自从NDK的r19开始,由于gcc兼容clang的编译方式有问题,该版本已经移除了相关gcc文件,所以用老方法交叉编译的时候,会提示找不到gcc文件。 如果把NDK版本换成14后重新配置环境变量执行脚本发现是OK的

但如果还是用21的版本该怎么搞呢?去除gcc推荐使用clang,将cc路径修改 --cc=$TOOLCHAIN/bin/armv7a-linux-androideabi21-clang

执行: make clear make -j8编译 make install 安装 这时指定的输出路径下android目录下:

相关学习资料推荐,点击下方链接免费报名,先码住不迷路~】

音视频免费学习地址:https://xxetb.xet.tech/s/2cGd0

【免费分享】音视频学习资料包、大厂面试题、技术视频和学习路线图,资料包括(C/C++,Linux,FFmpeg webRTC rtmp hls rtsp ffplay srs 等等)有需要的可以点击788280672加群免费领取~

三:创建Shell脚本文件便于长期使用: 创建一个android.sh的文件

使用编辑工具编辑脚本内容

#!/bin/bash
echo "进入编译ffmpeg脚本"
#架构下的so库和头文件
PLATFORM=$NDK/platforms/android-21/arch-arm

#交叉编译工具 谁来用,用在哪
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64

CPU=armv7-a

PREFIX=./android/$CPU 

function buildFF
{
echo "开始编译ffmpeg脚本"
./configure 
    --prefix=$PREFIX 
    --target-os=android 
    --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- 
    --arch=arm 
    --cpu=armv7-a  
    --sysroot=$PLATFORM 
    --extra-cflags="-I$PLATFORM/usr/include -fPIC -DANDROID -mfpu=neon -mfloat-abi=softfp " 
    --cc=$TOOLCHAIN/bin/arm-linux-androideabi-gcc 
    --nm=$TOOLCHAIN/bin/arm-linux-androideabi-nm 
    --enable-shared 
    --enable-runtime-cpudetect 
    --enable-gpl 
    --enable-small 
    --enable-cross-compile 
    --enable-asm 
    --enable-neon 
    --enable-jni 
    --enable-mediacodec 
    --enable-decoder=h264_mediacodec 
    --enable-hwaccel=h264_mediacodec 
    --disable-debug 
    --disable-static 
    --disable-doc 
    --disable-ffmpeg 
    --disable-ffplay 
    --disable-ffprobe 
    --disable-ffserver 
    --disable-postproc 
    --disable-avdevice 
    --disable-symver 
    --disable-stripping
	make -j8
	make install
echo "结束编译ffmpeg脚本"
}

buildFF

运行一下试试:

修改脚本实现动态配置一些参数:

#!/bin/bash
echo "进入编译ffmpeg脚本"
NDK=/root/ff/android-ndk-r14b
#5.0
PLATFORM=$NDK/platforms/android-21/arch-arm
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64
CPU=armv7-a
#输出路径
PREFIX=./android/$CPU
function buildFF
{
	echo "开始编译ffmpeg"
	./configure 
    --prefix=$PREFIX 
    --target-os=android 
    --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- 
    --arch=arm 
    --cpu=$CPU  
    --sysroot=$PLATFORM 
    --extra-cflags="$CFLAG" 
    --cc=$TOOLCHAIN/bin/arm-linux-androideabi-gcc 
    --nm=$TOOLCHAIN/bin/arm-linux-androideabi-nm 
    --enable-shared 
    --enable-runtime-cpudetect 
    --enable-gpl 
    --enable-small 
    --enable-cross-compile 
    --disable-debug 
    --disable-static 
    --disable-doc 
    --disable-ffmpeg 
    --disable-ffplay 
    --disable-ffprobe 
    --disable-ffserver 
    --disable-postproc 
    --disable-avdevice 
    --disable-symver 
    --disable-stripping 
    $ADD 
    make -j16
    make install
	echo "编译结束!"
}
###########################################################
echo "编译支持neon和硬解码"
CPU=armv7-a
PREFIX=./android/armv7-a-neon-hard
CFLAG="-I$PLATFORM/usr/include -fPIC -DANDROID -mfpu=neon -mfloat-abi=softfp "
ADD="--enable-asm 
    --enable-neon 
    --enable-jni 
    --enable-mediacodec 
    --enable-decoder=h264_mediacodec 
    --enable-hwaccel=h264_mediacodec "
buildFF

###########################################################
echo "编译不支持neon和硬解码"
CPU=armv7-a
PREFIX=./android/$CPU
CFLAG="-I$PLATFORM/usr/include -fPIC -DANDROID -mfpu=vfp -mfloat-abi=softfp "
ADD=
buildFF

此时再次执行,此时会生成两套:

原文 FFmpeg交叉编译、脚本参数配置 - 掘金

展开阅读全文

页面更新:2024-03-12

标签:脚本   路径   架构   环境变量   命令   参数   版本   文件   目录   工具   工作

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top