ffmpeg入门(1):组成与简介

组成

ffmpeg是录制、转换以及流化音视频的完整的跨平台的解决方案。FFmpeg在Linux平台下开发,但它同样也可以在其它操作系统环境中编译运行,包括Windows、Mac OS X等。这个项目最早由Fabrice Bellard发起,现在由Michael Niedermayer维护。许多FFmpeg的开发人员都来自MPlayer项目,而且当前FFmpeg也是放在MPlayer项目组的服务器上。项目的名称来自MPEG视频编码标准,前面的"FF"代表"Fast Forward"。

相关术语解释如下:

 

术语 全称 说明
ffmpeg Fast forword mpeg 音视频转换器
ffplay Fast forword play 用ffmpeg实现的播放器
ffserver Fast forword server 用ffmpeg 实现的rstp 服务器
ffprobe Fast forword probe 用来输入分析输入流

 

主要功能库如下:

libavutil:能使编程简化的函数库,如生成随机数、数据结构、教学案例、核心的多媒体程序等。

libavcodec:用于对音频和视频的编码和解码。

libavformat:用于对多媒体格式封装的复用与解复用。(复用与解复用为专业术语,后面会介绍到)

libavdevice:用于对输入/输出设备数据的数据的读与写,包括Video4Linux, Video4Linux2, VfW, and ALSA。

libavfilter:用于对多媒体滤镜的调用。

libswscale:是一个高度优化的图像缩放和颜色空间/像素格式转换操作的库。

libswresample:是一个高度优化的音频重采样、重排列颜色矩阵的操作的库。

调用命令规则:

ffmpeg [global_options] {[input_file_options] -i input_file} ... {[output_file_options] output_file} ...

参数选项由三部分组成:(1)可选的一组全局参数。(2)一组或多组输入文件参数。(3)一组或多组输出文件参数。

其中,每组输入文件参数以‘-i’为结束标记;每组输出文件参数以输出文件名为结束标记,方括号表示可选项,花括号表示必选项。

简介

ffmpeg是一个能高速转换视频与音频的转换器,同时它还能抓取实时的视频和音频。ffmpeg可以使用高质量的多相滤镜去转换任意比特率的视频。

ffmpeg可以读取任意数量的输入文件(如规范的文件、管道、网络数据流、数据抓捕设备等),通过-i 调用;同样,可以写入任意数量的输出文件,输出文件由一个纯输出文件名指定的,在写输出文件参数时,任何不能被系统识别的命令项都将会被认为是输出文件。

各个输入和输入文件,在原则上,可以包含多个不同类型的数据流(video/audio/subtitle/attachment/data),这些不同类型的数据流会依据该文件封装的格式而定。输入文件中选择哪些数据流作为输出文件的数据流也都是自动化的,若想了解可以参考ffmpeg官网文档关于Stream的章节。

在使用输入文件的索引指向命令项时,索引值是以0开始计数,如2:3指的是第三个输入文件的第四个数据流。

按照一般规则,命令项的每一个命令默认都是指向下一个文件的,所以你可以多次使用同一个命令项指向下一个文件,但也有例外,如全局命令项就应该写在最前面。

在写命令行时,不要混淆输入文件和输出文件,输入文件写在前面,输出文件写在后面,输入文件和输出文件都有各自的命令项。

命令行调用例子:

(1)修改一个视频的比特率为64kbit/s

ffmpeg -i input.avi -b:v 64k -bufsize 64k output.avi

(2)修改一个视频的帧频数

ffmpeg -i input.avi -r 24 output.avi

(3)强制修改输入文件的帧频为1,同时生成一个帧频为24的输出文件

ffmpeg -r 1 -i input.m2v -r 24 output.avi

 

你可能感兴趣的:(ffmpeg)