序
更新:本教程最近一次更新于2015年2月。
FFmpeg是一个创建视频应用,甚至更通用程序的强大音视频工具库。FFmpeg能够完成视频处理过程中解码,编码,封装和解封装所有这些棘手工作。借助它,可以大大简化媒体应用程序的开发。它的代码非常精简,使用C语言开发,效率极高。并且可以解码几乎所有流行的视频压缩格式,也可以用来编码大多数视频格式。
但是,因为音视频的门槛较高,网上这方面的文档资料比较少。早年雷霄骅大神有过很多分析博客。而国外有些博客介绍FFmpeg,但都是英文。从事了这么多年音视频工作,现在想将外文博客翻译成中文,对这些年的工作做个整体全局性的回顾,记录在此专栏中。
FFmpeg有一个名为FFplay的示例程序。它是一个简单的C程序,使用FFmpeg实现了一个功能完整的视频播放器。本教程将基于最新版本(v2.6.3)的原始教程,开发一个可以使用的视频播放器。在本教程每个章节中,我将介绍一两个新想法并解释我们要怎么实现它。每个教程都有一个C文件,以便您可以下载、在自己电脑上编译运行。跟着本教程,我们将用不到1000行代码实现的视频播放器!
本播放器的开发,我们使用SDL输出媒体文件的音频和视频。 SDL是一个优秀的跨平台多媒体库,常用于MPEG解码播放、模拟器和许多游戏的渲染。您需要为自己电脑下载并安装SDL开发库,以便在本教程中编译程序。
本教程适用于有一定编程基础的开发者。至少你应该熟悉C语言,对队列,锁等基本概念有了解。您也应该了解一些关于多媒体的基础知识,像帧率、分辨率、YUV、I/B帧等。