FFmpeg 历史

FFmpeg是一个开源免费跨平台的视频和音频流方案,属于自由软件,采用LGPL或GPL许可证(依据你选择的组件)。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多codec都是从头开发的。
FFmpeg在Linux平台下开发,但它同样也可以在其它操作系统环境中编译运行,包括Windows、Mac OS X等。
ffmpeg软件包经编译过后将生成三个可执行文件,ffmpeg,ffserver,ffplay。其中ffmpeg用于对媒体文件进行处理,ffserver是一个http的流媒体服务器,ffplay是一个基于SDL的简单播放器。
FFmpeg项目由以下几部分组成:
FFMpeg 视频文件转换命令行工具,也支持经过实时电视卡抓取和编码成视频文件。
FFServer 基于HTTP(RTSP正在开发中)用于实时广播的多媒体服务器,也支持时间平移.
FFplay 用SDL和FFmpeg库开发的一个简单的媒体播放器.

ffmpeg中有如下几个库文件:
Libswresample:可以对音频进行重采样,rematrixing 以及转换采样格式等操 作。

Libavcodec:提供了一个通用的编解码框架,包含了许多视频,音频,字幕流 等编码/解码器。

Libavformat:用于对视频进行封装/解封装。

Libavutil:包含一些共用的函数,如随机数生成,数据结构,数学运算等。

Libpostproc:用于进行视频的一些后期处理。

Libswscale:用于视频图像缩放,颜色空间转换等。

Libavfilter:提供滤镜功能。

FFmpeg命令

调用命令规则:
ffmpeg [global_options] {[input_file_options] -i input_file} … {[output_file_options] output_file} …
参数选项由三部分组成:(1)可选的一组全局参数。(2)一组或多组输入文件参数。(3)一组或多组输出文件参数。
其中,每组输入文件参数以‘-i’为结束标记;每组输出文件参数以输出文件名为结束标记,方括号表示可选项,花括号表示必选项。
例如:

修改一个视频的帧频数
ffmpeg -i input.avi -r 24 output.avi