ffmpeg简介

注意:本文是基于FFMPEG的3.3.1 版本,如有出入请先核对版本是否相同

一、缘起

做多媒体开发这么多年,接触了不少开源库,其中FFMPEG算是接触时间比较长的一个了,之前已经介绍了gstreamer和VLC了,这里也小小的来介绍一下FFMPEG。

二、简介

FFmpeg(全名是Fast Forward MPEG(Moving Picture Experts Group))是全球领先的多媒体框架,能够解码(decode)、编码(encode)、转码(transcode)、复用(mux)、解复用(demux)、流化(stream)、滤波(filter)和播放几乎任何人类和机器创造的多媒体文件。它具有不少特点:

  • 高可移植性:可以在Linux, Mac OS X, Microsoft Windows, the BSDs, Solaris等等系统上编译,运行以及通过FATE(FFmpeg Automated Testing Environment:FFMPEG自动化测试环境)测试;
  • 高性能:专门针对X86,arm,MIPS,ppc等大多数主流的处理器提供了对应的汇编级别的优化实现
  • 高度安全:FFMPEG官网上说,他们对代码审查总是考虑安全性,而且一旦发布的版本中有安全性的Bug都会尽快的修复并更新发布版本
  • 高度易用性:FFMPEG的提供的API都有相关的注释,且官方也有对应的说明文档
  • 支持的格式多样性:FFMPEG支持很多很多多媒体格式的解码,编码,复用,解复用等功能,不管是很老的格式,还是比较新的格式均有不错的支持
  • 高度可扩展:FFMPEG是一个模块化的结构,不管是avformat,还是avcodec都有相应的类型结构体,完全可以实现自己比较特殊的编解码器或者解复用等功能并注册到FFMPEG当中去
  • 。。。

特点很多,我也不尽解。

2.1 FFMPEG工具

在FFMPEG源代码中自带了几个比较实用的工具,通过编译选项的设置可以编译出来。

  • ffmpeg:一个命令行工具,用来进行对媒体文件的格式转换(如 mkv 转 mp4等)
  • ffserver:一个对媒体流服务器,用于直播
  • ffplay:基于SDL和FFMPEG 库的一个简单播放器
  • ffprobe:一个简单的多媒体流分析工具

2.2 FFMPEG主要的库

  • libavutil:简化编程的工具函数库,包括随机数生成器,数据结构,数学函数,多媒体核心工具函数等等
  • libavcodec:包含音视频编解码的库
  • libavformat:包含复用,解复用多媒体容器的库
  • libavdevice:包含输入/输出设备的库,它能从一些通用的软件框架中抓取数据,也能将多媒体数据送到一些通用软件框架中去渲染。这些通用软件框架包括:Video4Linux,Video4Linux2,VfW以及ALSA等
  • libavfilter:包含多媒体滤波器的库
  • libswscale:用于执行高性能的图像缩放,颜色空间或像素格式转换的库
  • libswresample:用于执行高性能音频重采样,重矩阵化(rematrixing,不确定翻译是否准确),采样格式转换以及混音(主要是声道转换(如5.1声道转到立体声等))等功能的库

2.3 官方网站

http://ffmpeg.org/

猜你喜欢

转载自blog.csdn.net/xuanwolanxue/article/details/72844577