什么是FFmpeg

FFmpeg是当前相当流行的开源多媒体开发框架,可以记录、转换数字音频、视频并能将其解码、编码、转码、混流、分离、转化为流、过滤以及播放几乎所有的媒体文件。FFmpeg拥有先进的音频/视频编解码库libavcodec,可以完成音视频的编码、解码、转码、采集、后处理(抓图、水印、封装/解封装、格式转换等)、流媒体服务等诸多功能。基本涵盖了音视频开发中绝大多数的领域,如直播、短视频、网络视频、音视频通话、视频监控甚至人工智能等。




androidstudio集成ffmpeg android studio ffmpeg_ffmpeg转码


FFmpeg组成

FFmpeg既是一套音视频编解码开发组件,包含了FFmpeg Tools、FFmpeg SDK和FFmpeg Sources。FFmpeg Tools主要提供了是ffmpeg.exe(音视频转码)、ffplay.exe(音视频播放)、ffserver.exe(流媒体服务器)和ffprobe.exe(多媒体码流分析),借用这些工具可以帮助我们快速的获取音视频的相关信息。FFmpeg SDK是为开发者提供的开发工具集合,提供了各个不同平台编译完成的库,开发者可以根据自己的需求使用这些库开发应用程序。FFmpeg Sources则是FFmpeg的工程源码,FFmpeg SDK就是这些源代码编译出来的,该源码由C语言实现,如果你有C技术可以在FFmpeg 基础上再深度定制开发。


androidstudio集成ffmpeg android studio ffmpeg_linux编译ffmpeg_02


FFmpeg下载

FFmpeg官网提供了FFmpeg的工具、库和源代码等资源下载,我们直接进入 FFmpeg官网找到”Download“页面。这里提供了【Get packages & executable files】下载和【Get the Sources】下载,【Get packages & executable files】中包含了SDK和Tools,【Get the Sources】则是FFmpeg的工程源码,直接下载就好了(也可以Git下载)。


androidstudio集成ffmpeg android studio ffmpeg_ffmpeg转码_03


Get packages & executable files

这里根据自己的系统选择下载平台,这里选择”Windows EXE Files“下的“Windows builds by Zeranoe”后会跳转到Windows版本的下载页面。这里我们需要注意选择Version版本(Version建议选Release发布版更稳定)、系统版本(自动检测)、Linking模式、和License许可协议( 默认GPL 3.0),这里主要注意下Linking提供了三种不同的模式分别是static、shared和dev,作为开发这里我们下载已经编译好的share和dev即可。

static:该版本提供了FFmpeg文档和静态版本的FFmpeg工具,它将依赖的库生成在了最终的可执行文件中;

share:该版本提供了FFmpeg文档和FFmpeg工具以及程序运行过程必须依赖于提供的dll文件;

dev:提供了库的.h头文件和.lib引导库;


androidstudio集成ffmpeg android studio ffmpeg_linux编译ffmpeg_04


QT+FFmpeg

这里为什么选择QT作为FFmpeg的开发IDE,QT是一款支持跨平台的C++开发工具,拥有方便快捷的交互设计器,提供了功能丰富的SDK和Tools,可以快速、高效的创建和测试桌面程序开发和嵌入式开发。QT还具有非常好的可移植性一套代码可以同时在Windows、Linux、Mac OS X、Android、iOS、WinCE、Unix等多种平台中运行而且不用依赖虚拟机机制,速度和性能都很好。QT集成了多线程、访问数据库、图像处理、音频视频处理、网络通信、文件操作等功能,可以让我们做FFmpeg开发变得更简洁、高效。


androidstudio集成ffmpeg android studio ffmpeg_linux编译ffmpeg_05