ffmpeg是一个很棒的库,用于创建视频应用程序,甚至是通用实用程序。ffmpeg为您完成所有解码、编码、多路复用和多路分解,从而承担视频处理的所有繁重工作。这可以使媒体应用程序的编写变得简单得多。它很简单,用C语言编写,速度快,几乎可以解码你今天使用的任何编解码器,也可以对其他几种格式进行编码。
唯一的问题是文档基本上是不存在的。只有一个教程展示了ffmpeg和自动生成的doxygen文档的基础知识。就是这样。因此,当我决定学习ffmpeg,并在了解数字视频和音频应用程序如何工作的过程中,我决定记录这个过程,并将其作为教程展示。
有一个示例程序随ffmpeg一起提供,称为ffplay。这是一个简单的C程序,使用ffmpeg实现了一个完整的视频播放器。本教程将从马丁·博姆(Martin Böhme)(我从那部作品中大量借用)编写的原始教程的更新版开始,然后基于Fabrice Bellard的ffplay.c开发一个可以正常工作的视频播放器。在每个教程中,我都会介绍一个(或两个)新想法,并解释我们是如何实现它的。每个教程都有一个C文件,这样您就可以下载、编译它,然后在家里学习。源文件将向您展示真正的程序是如何工作的,我们如何移动所有的部件,以及向您展示对本教程不重要的技术细节。当我们完成时,我们将拥有一个用不到1000行代码编写的工作视频播放器!
在制作播放器时,我们将使用SDL来输出媒体文件的音频和视频。SDL是一个优秀的跨平台多媒体库,用于MPEG播放软件、仿真器和许多视频游戏。您需要为您的系统下载并安装SDL开发库,才能编译本教程中的程序。
本教程面向具有良好编程背景的人。至少您应该了解C,并对队列、互斥锁等概念有一定的了解。你应该知道一些关于多媒体的基础知识,比如波形之类的东西,但是你不需要知道太多,因为我在本教程中解释了很多这些概念。
还有一些教程的老式ASCII文件。您还可以获取文本文件和源代码的tarball,或者只获取源代码。
请随时给我发电子邮件,告诉我错误、问题、评论、想法、功能,无论是什么,都可以在gmail.com的dranger上发电子邮件给我。
本作品受知识共享署名-类似共享2.5许可证许可。要查看本许可证的副本,请访问http://creativecommons.org/licenses/by-sa/2.5/或致函美国加利福尼亚州旧金山霍华德街543号5楼创意共享,邮编:94105。代码示例基于FFplay、版权所有(C)2003 Fabrice Bellard和Martin Bohme的教程。