FFmpeg 0.63核心架构分析

FFmpeg 的结构挺有意思的,六大核心库分工明确,谁负责什么一目了然。像libavformat搞封装、libavcodec管解码,libavutil就像是工具箱,都是老朋友了。还有libswscalelibavfilter,一个调色调比例,一个玩特效滤镜,视频这些事它们都能干。

Visual C++ 2008Intel C++ Compiler搞编译也挺有年代感的,不过为支持C99倒是个不错的选择。版本上的是0.63,但也提到了特定的SVN分支,像ffmpeg-git-a304071-branch,细节蛮到位的。

ffmpegffserverffplay这三兄弟,一个干转换、一个搞流媒体、一个做播放器,各有分工。你不用关心它们的源码,重点还是搞清楚各个库是怎么协作的。

如果你搞过DirectShow或者GStreamer,你会觉得FFmpeg的思路还蛮像的——各种组件接起来像流水线一样音视频。虽然实现方式不同,但逻辑挺通的。

,如果你要深挖FFmpeg,不光是用命令行转个格式,还是得明白它的模块划分和数据流走向。不然一堆.c.h文件看着也挺头大的。

如果你准备开发自己的播放器、流媒体服务,或者想自己撸一套转码服务,那了解这些库的功能和结构就挺关键的了。别跳过基础概念,后面文件结构时你会轻松不少。

doc 文件大小:1.4MB