首页 > 系统相关 >ffmpeg 编译安装android和linux

ffmpeg 编译安装android和linux

时间:2023-07-29 10:33:17浏览次数:44  
标签:bin ffmpeg -- linux android CPU x86

ffmpeg 编译安装android和linux

下载:https://github.com/FFmpeg/FFmpeg
https://www.ffmpeg.org/download.html

envirenment

ndk: https://github.com/android/ndk/wiki/Unsupported-Downloads

sudo apt-get install build-essential pkg-config
sudo apt-get intall libx264-dev libspeex-dev libfdk-aac-dev

编译安装脚本

#!/bin/bash
# 清空上次的编译
make clean
#你自己的NDK路径.
#export NDK=/home/anjoiner/Android/Sdk/ndk-bundle
#export NDK=/home/light/Android/Sdk/ndk/25.1.8937393
export NDK=/mnt/light-link/DevTools/android-ndk-r21d
TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/linux-x86_64/
API=30

function build_android
{
echo "Compiling FFmpeg for $CPU"
./configure \
    --prefix=$PREFIX \
    --enable-neon \
    --enable-hwaccels \
    --enable-gpl \
    --enable-postproc \
    --enable-shared \
    --enable-jni \
    --enable-mediacodec \
    --enable-decoder=h264_mediacodec \
    --disable-static \
    --disable-doc \
    --enable-ffmpeg \
    --disable-ffplay \
    --disable-ffprobe \
    --enable-avdevice \
    --disable-doc \
    --disable-symver \
    --cross-prefix=$CROSS_PREFIX \
    --target-os=android \
    --arch=$ARCH \
    --cpu=$CPU \
    --cc=$CC
    --cxx=$CXX
    --enable-cross-compile \
    --sysroot=$SYSROOT \
    --extra-cflags="-Os -fpic $OPTIMIZE_CFLAGS" \
    --extra-ldflags="$ADDI_LDFLAGS" \
    $ADDITIONAL_CONFIGURE_FLAG
make clean
make -j20
make install
echo "The Compilation of FFmpeg for $CPU is completed"
}

export target_arch=$1
if [ "${target_arch}" = "" ]; then
    target_arch=armv8a
fi;

echo ${target_arch}

if [ "${target_arch}" = "armv8a" ]; then
    echo ${target_arch} is armv8a
    #armv8-a
    ARCH=arm64
    CPU=armv8-a
    CC=$TOOLCHAIN/bin/aarch64-linux-android$API-clang
    CXX=$TOOLCHAIN/bin/aarch64-linux-android$API-clang++
    SYSROOT=$NDK/toolchains/llvm/prebuilt/linux-x86_64/sysroot
    CROSS_PREFIX=$TOOLCHAIN/bin/aarch64-linux-android-
    PREFIX=$(pwd)/build/$CPU
    OPTIMIZE_CFLAGS="-march=$CPU"
    build_android
elif [ ${target_arch} = "armv7a" ]; then
    echo ${target_arch} is armv7a
    #armv7-a
    ARCH=arm
    CPU=armv7-a
    CC=$TOOLCHAIN/bin/armv7a-linux-androideabi$API-clang
    CXX=$TOOLCHAIN/bin/armv7a-linux-androideabi$API-clang++
    SYSROOT=$NDK/toolchains/llvm/prebuilt/linux-x86_64/sysroot
    CROSS_PREFIX=$TOOLCHAIN/bin/arm-linux-androideabi-
    PREFIX=$(pwd)/build/$CPU
    OPTIMIZE_CFLAGS="-mfloat-abi=softfp -mfpu=vfp -marm -march=$CPU "
    build_android
elif [ ${target_arch} = "x86" ]; then
    echo ${target_arch} is x86
    #x86
    ARCH=x86
    CPU=x86
    CC=$TOOLCHAIN/bin/i686-linux-android$API-clang
    CXX=$TOOLCHAIN/bin/i686-linux-android$API-clang++
    SYSROOT=$NDK/toolchains/llvm/prebuilt/linux-x86_64/sysroot
    CROSS_PREFIX=$TOOLCHAIN/bin/i686-linux-android-
    PREFIX=$(pwd)/build/$CPU
    OPTIMIZE_CFLAGS="-march=i686 -mtune=intel -mssse3 -mfpmath=sse -m32"
    build_android
else
    echo ${target_arch} is default x86_64
    #x86_64
    ARCH=x86_64
    CPU=x86-64
    CC=$TOOLCHAIN/bin/x86_64-linux-android$API-clang
    CXX=$TOOLCHAIN/bin/x86_64-linux-android$API-clang++
    SYSROOT=$NDK/toolchains/llvm/prebuilt/linux-x86_64/sysroot
    CROSS_PREFIX=$TOOLCHAIN/bin/x86_64-linux-android-
    PREFIX=$(pwd)/build/$CPU
    OPTIMIZE_CFLAGS="-march=$CPU -msse4.2 -mpopcnt -m64 -mtune=intel"
    build_android
fi;

标签:bin,ffmpeg,--,linux,android,CPU,x86
From: https://www.cnblogs.com/minding/p/17589386.html

相关文章

  • linux tar命令之小知识-解压指定层级目录以及指定文件
    我们以解压k8s二进制源码文件为例,只解压出第三层级目录下的kube-apiserver、kube-controller-manager、kubectl、kubelet、kube-proxy、kube-scheduler这几个文件。k8s源码文件目录结构,目录实在太多了,我删除了大部分,不在这里显示[root@k8s-master01tmp]#treekubernetesku......
  • VirtualEnv 20.24.0 发布 | 《Linux就该这么学》
    VirtualEnv20.24.0现已发布,VirtualEnv用于在一台机器上创建多个独立的Python运行环境,可隔离项目之间的第三方包依赖,为部署应用提供方便,把开发环境的虚拟环境打包到生产环境即可,不需要在服务器上再折腾一翻。新版更新内容如下:release20.23.1#2590修复CI#2593......
  • VirtualEnv 20.24.0 发布 | 《Linux就该这么学》
    VirtualEnv20.24.0现已发布,VirtualEnv用于在一台机器上创建多个独立的Python运行环境,可隔离项目之间的第三方包依赖,为部署应用提供方便,把开发环境的虚拟环境打包到生产环境即可,不需要在服务器上再折腾一翻。新版更新内容如下:release20.23.1#2590修复CI#2593......
  • 552页《Android开发相关源码精编解析》开源分享,优秀Android工程师必备
    2022年已过大半,回首上半年,有犹豫、有抉择、有放弃、有收获。在拼尽全力后,我度过了职业生涯的第一个七年之痒,从之前的外包小厂成功跳槽到一家一线互联网大厂,年薪从30w涨到了50w!!!在这里我想跟各位有多年开发经验的同行说一句:“无论你处在人生的那个阶段,无论你身处于那个职位,都不要摆烂......
  • Flutter是跨平台开发终极之选吗?Android开发该如何快速上手Flutter?
    跨端技术是Android程序员乃至所有移动开发程序员一直在研究的课题。3月4日,谷歌正式发布了Flutter的2.0。该版本最大的特性就是可以支持五大主流的操作系统:iOS、Android、Linux、Windows和MacOS。官方甚至还说丰田将会把Flutter带到汽车中。也就是说,我们可以用一套Flutter......
  • 程序员进阶必备,这份Android架构师进阶学习资料全家桶助你提升无忧
    走技术这条路的程序员进阶需要具备什么条件呢?大概总结起来有两点:1.扎实的基础底层功底(四大组件、布局使用、多线程、动画…)2.技术的深度和广度(自定义View、性能优化、Flutter、热修复、插件化…)3.同时,了解和学习常用的开源库也十分重要,常用的开源库主要包括图片加载、网络请求、......
  • 基于android个人生活助手app
    随着移动支付业务的快速发展,人们日常支出的记账手段发生了很大的变化。通过对个人生活支出记账的需求进行调查分析,发现作为个人生活记账管理的重要补充,个人生活助手对使用人员起着不可替换的帮助作用。本文通过实现个人生活助手系统,来更好的帮助日常使用人员降低日常支出信息难度,提......
  • Android平台GB28181设备接入侧如何同时对外输出RTSP流?
    技术背景GB28181的应用场景非常广泛,如公共安全、交通管理、企业安全、教育、医疗等众多领域,细分场景可用于如执法记录仪、智能安全帽、智能监控、智慧零售、智慧教育、远程办公、明厨亮灶、智慧交通、智慧工地、雪亮工程、平安乡村、生产运输、车载终端等:公共安全:通过GB28181协议,用......
  • Android时间工具类
    ✍️作者简介:沫小北(专注于Android、Web、TCP/IP等技术方向)......
  • linux console
    内核配置文件(比如arch\arm\configs\imx_v6_v7_defconfig)会配置宏CONFIG_CMDLINE,用于某些情况下配置内核CONFIG_CMDLINE="noinitrdconsole=ttymxc0,115200"由以下代码可知,当设备树没有bootargs,或者设置了CONFIG_CMDLINE_FORCE,则使用内核配置文件提供的CONFIG_CMDLINE......