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

本文详细介绍了FFmpeg的组件、类库及其在Windows10和NDK环境下编译的方法,包括使用MSYS2、Yasm和Clang,以及修改configure文件和编写build_android.sh脚本来适应新版本的FFmpeg编译需求。
摘要由CSDN通过智能技术生成

用来查看多媒体文件的信息

  • ffprobe-all

包含ffprobe工具及FFmpeg组件

  • ffserver

与流媒体服务相关,负责响应客户端的流媒体请求,把流媒体数据发送给客户端

  • ffserver-all

包含ffserver工具及FFmpeg组件

1.2 组件概述


  • Utilities

libavutils提供的通用的features及工具

  • Video scaling and pixel format converter

视频缩放和像素格式转换器

  • Audio resampler

音频重新取样

  • Encoders and decoders

编码和解码

  • Bitstream filters

码流过滤器

  • Muxers and demuxers

数据合成及数据分离

  • Protocols

协议

  • Input and output devices

输入和输出设备

  • Filters

过滤器

1.3 类库概述


  • libavutil

包含了一些公共的工具函数

  • libswscale

用于视频场景比例缩放、色彩映射转换、图像颜色控件或格式转换

  • libswresample

原始音频格式转码

  • libavcodec

用于各种类型声音/图像转码,该库是音视频编码核心库

  • libavformat

用于各种音视频封装格式的生成和解析。

  • libavdevice

硬件采集、加速、显示。

  • libavfilter

音视频滤波器开发。

  • libavresample

音视频封装编解码格式预设等。

  • libpostproc

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

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}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值