简介
FFmpeg 是一个集录制、转换、音/视频编码解码功能为一体的完整的开源解决方案;FFmpeg 的开发是基于 Linux 操作系统的,但是可以在大多数操作系统中编译和使用
FFmpeg 支持 MPEG、 DivX、MPEG4、AC3、DV、FLV 等40多种编码,AVI、MPEG、OGG、Matroska、ASF 等90多种解码
TCPMP,VLC, MPlayer 等开源播放器都用到了 FFmpeg
FFmpeg 主目录下主要有 libavcodec、libavformat和libavutil 等子目录
其中 libavcodec 用 于存放各个 encode/decode 模块,libavformat 用于存放 muxer/demuxer 模块,libavutil 用于 存放内存操作等辅助性模块
以 flash movie 的 flv 文件格式为例, muxer/demuxer 的 flvenc.c 和 flvdec.c 文件在
libavformat 目录下,encode/decode 的 mpegvideo.c 和 h263de.c 在 libavcodec 目录下
FFmpeg 编解码基础知识
FFmpeg 基本信息查询
封装格式
所谓封装格式是指音视频的组合格式,例如最常见的封装格式有 mp4、mp3、flv 等;简单来说,我们平时接触到的带有后缀的音视频文件都是一种封装格式;不同的封装格式遵循不同的协议标准,有兴趣的可以自行扩展
编码格式
以 mp4 为例,通常应该包含有视频和音频;视频的编码格式为 YUV420P,音频的编码格式为 PCM;再以 YUV420 编码格式为例;我们知道通常图像的显示为 RGB(