Android音视频开发入门(6)Windows下编译FFmpeg4

用于后期效果处理,如图像的去块效应

1.4 文件概述


  • Frequently Asked Questions

常见问题

  • Support External Libraries,Formats,Codecs or Features

支持扩展库、格式、编解码或特性

  • Platform Specific Information

平台具体信息

  • Developer Documentation

开发者概述

  • Git How-To

Git

  • FFmpeg Automated Testing Enviroment

FFmpeg自动化测试环境。

2. 在Windows10、NDK r20下编译FFmpeg

================================================================================================

在Windows下编译FFmpeg需要准备工具 MSYS2Yasm

MSYS2集成了 Pacman、MinGW-w64的Cygwin升级版,下载地址在:MSYS2下载地址

Yasm是一个汇编器。在地址在:Yasm下载地址,下载对应的 .exe文件,下载完后放入到 Windows\System32文件夹下就行了。

关于安装完MSYS2后,需要配置一些东西,重点去看这个blog:msys2在windows10下编译安装ffmpeg+x265

至于265的可以考虑先装。

在这个地方(使用WIN10编译)我踩坑无数,花了几天的休息时间终于编译出来了。

这里先列出我所有踩过的坑:

  1. 书上、网上的编译方法过于老旧

书上、网上所使用的的FFmpeg、ndk都是比较旧的,比如FFmpeg是3.xx,ndk是r12或者r10

而新版本的ndk是r20,ffmpeg是4.2

他们的区别是 旧版本使用gcc编译,新版本必须使用clang编译。

  1. 关于msys2

它是一个命令行工具,可以使用 ./来执行文件,它的作用和linux的终端一样,功能非常强大

我们要用其来编译ffmpeg。

  1. 使用clang时,要去改configure文件,旧版本也要,但是新旧的改法已经完全不同了。

这里就不多探究为什么要怎么怎么改。具体的可以参考这篇文章(完全ok):编译 FFmpeg 之 clang

2.1 编辑configure文件


先说下目的:ffmpeg4之后使用clang编译器进行编译,但是它并没有专门为clang声明一套方案,这导致如果我们不在其配置文件下加入clang的一些声明,会导致后期我们编译ffmpeg不成功。

首先在ffmpeg的文件下找到configure,用文本打开。

找到 --cross-prefix=PREFIX use PREFIX for compilation tools [$cross_prefix]

在其下面加一行:

–corss-prefix-clang=PREFIX use PREFIX for compilation clang tools [$cross_prefix]

接着找到 CMDLINE_SET="..... corss_prefix

在其下面添加一行:

cross_prefix_clang

接着找到

set_default target_os

if test “$target_os” = android; then

cc_default=“clang”

fi

ar_default=“ c r o s s p r e f i x {cross_prefix} crossprefix{ar_default}”

cc_default=“ c r o s s p r e f i x {cross_prefix} crossprefix{cc_default}”

cxx_default=“ c r o s s p r e f i x {cross_prefix} crossprefix{cxx_default}”

nm_default=“ c r o s s p r e f i x {cross_prefix} crossprefix{nm_default}”

pkg_config_default=“ c r o s s p r e f i x {cross_prefix} crossprefix{pkg_config_default}”

替换成:

set_default target_os

if test “$target_os” = android; then

cc_default=“clang”

cxx_default=“clang++”

fi

ar_default=“ c r o s s p r e f i x {cross_prefix} crossprefix{ar_default}”

cc_default=“ c r o s s p r e f i x c l a n g {cross_prefix_clang} crossprefixclang{cc_default}”

cxx_default=“ c r o s s p r e f i x c l a n g {cross_prefix_clang} crossprefixclang{cxx_default}”

nm_default=“ c r o s s p r e f i x {cross_prefix} crossprefix{nm_default}”

pkg_config_default=“ c r o s s p r e f i x {cross_prefix} crossprefix{pkg_config_default}”

保存文件,使用msys2进入到ffmpeg根目录下执行 ./configure 来跑一边配置文件

2.2 编写 build_android.sh脚本


在根目录下新建一个名为 temp的文件夹作为 编译过程中的临时文件。

在ffmpeg根目录下编写一个脚本名为build_android.sh,用来编译ffmpeg。

在里面编辑(注意看注释):

#!/bin/bash

make clean

#指定ndk路径

export NDK=C:/Users/msn/AppData/Local/Android/Sdk/ndk-bundle

#指定ffmpeg路径

export FFMPEG=C:/Users/msn/Desktop/ffmpeg-4.2.1

#指定临时文件夹

export TMPDIR=$FFMPEG/temp

#指定sysroot

export SYSROOT=$NDK/toolchains/llvm/prebuilt/windows-x86_64/sysroot

#指定平台

export PLATFORM=$NDK//toolchains/llvm/prebuilt/windows-x86_64

#指定cpu(如果用clang编译,必须指定cpu为armv7-a)

export CPU=armv7-a

#指定产出文件

export PREFIX=C:/Users/msn/Desktop/ffmpeg-4.2.1/android/$cpu

function build

{

./configure \

–prefix=$PREFIX \

–target-os=android \

–arch=$CPU \

–enable-shared \

–disable-static \

–disable-doc \

–disable-ffmpeg \

–disable-ffplay \

–disable-ffprobe \

–disable-avdevice \

–disable-symver \

–enable-cross-compile \

–sysroot=$SYSROOT \

–cross-prefix=$PLATFORM/bin/arm-linux-androideabi- \

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
img

关于面试的充分准备

一些基础知识和理论肯定是要背的,要理解的背,用自己的语言总结一下背下来。

虽然 Android 没有前几年火热了,已经过去了会四大组件就能找到高薪职位的时代了。这只能说明 Android 中级以下的岗位饱和了,现在高级工程师还是比较缺少的,我能明显感觉到国庆后多了很多高级职位,所以努力让自己成为高级工程师才是最重要的。

好了,希望对大家有所帮助。

接下来是整理的一些Android学习资料,有兴趣的朋友们可以关注下我免费领取方式

①Android开发核心知识点笔记

②对标“阿里 P7” 40W+年薪企业资深架构师成长学习路线图

③面试精品集锦汇总

④全套体系化高级架构视频

**Android精讲视频领取学习后更加是如虎添翼!**进军BATJ大厂等(备战)!现在都说互联网寒冬,其实无非就是你上错了车,且穿的少(技能),要是你上对车,自身技术能力够强,公司换掉的代价大,怎么可能会被裁掉,都是淘汰末端的业务Curd而已!现如今市场上初级程序员泛滥,这套教程针对Android开发工程师1-6年的人员、正处于瓶颈期,想要年后突破自己涨薪的,进阶Android中高级、架构师对你更是如鱼得水!

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img
(技能),要是你上对车,自身技术能力够强,公司换掉的代价大,怎么可能会被裁掉,都是淘汰末端的业务Curd而已!现如今市场上初级程序员泛滥,这套教程针对Android开发工程师1-6年的人员、正处于瓶颈期,想要年后突破自己涨薪的,进阶Android中高级、架构师对你更是如鱼得水!

[外链图片转存中…(img-gddYOnUW-1712780668873)]

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-FbQMagV4-1712780668873)]

  • 21
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值