FFMpeg简介及命令选项参数

 

Ffmpeg简介: ffmpeg包括一组软件,ffmpeg用于对媒体文件进行处理,ffserver是一个http的流媒体服务器,ffplay是一个基于SDL的简单播 放器。两个库文件libavcodec和libavformat。 ffmpeg项目由以下几部分组成: ffmpeg 视频文件转换命令行工具,也支持经过实时电视卡抓取

Ffmpeg简介:

ffmpeg包括一组软件,ffmpeg用于对媒体文件进行处理,ffserver是一个http的流媒体服务器,ffplay是一个基于SDL的简单播放器。两个库文件libavcodec和libavformat。

ffmpeg项目由以下几部分组成:

ffmpeg 视频文件转换命令行工具,也支持经过实时电视卡抓取和编码成视频文件。

ffserver 基于HTTP(RTSP正在开发中)用于实时广播的多媒体服务器,也支持时间平移

ffplay 用 SDL和FFmpeg库开发的一个简单的媒体播放器

libavcodec 一个包含了所有FFmpeg音视频编解码器的库.为了保证最优性能和高可复用性,大多数编解码器从头开发的.

libavformat 一个包含了所有的普通音视格式的解析器和产生器的库.

ffmpeg作为媒体文件处理软件,基本用法如下:

ffmpeg -i INPUTfile [OPTIONS] OUTPUTfile

输入输出文件通常就是待处理的多媒体文件了。可以是纯粹的音频文件,纯粹的视频文件,或者混合的。大部分常见的格式都能够“通杀”。象常见的各种 mpeg,AVI封装的DIVX和Xvid等等,具体的格式支持列表可以使用ffmpeg -formats查看或直接查阅文档。

另:由于Linux把设备视为文件,因此-i选项后可以跟设备名。比如DV,视频卡,光驱或者其它的各类设备。

输出的内容通过Options调整。列出几个主要的选项

-vcodec 视频流编码方式

-b 视频流码率(默认只有200k,一般都需要手动设置,具体的数值视codec选择而定)

-r 视频流帧数(一般说来PAL制式通常用25,NTSC制式通常用29)

-s 视频解析度(分辨率,也要视codec和你的需要而定。通常改变某个视频流的解析度是很耗费CPU的事情。另:具体写法使用“数字x数字”的形式。中间是小写字母“x”,这个用过mplayer的应该都知道)

-t 处理持续时间。

-acodec 音频流编码方式

-ab 音频流码率(默认是同源文件码率,也需要视codec而定)

-ar 音频流采样率(大多数情况下使用44100和48000,分别对应PAL制式和NTSC制式,根据需要选择)

还有些可能需要用到的选项如:

-vn和-an分别是屏蔽视频流和屏蔽音频流,分别对源文件处理一次即可得到分离的音频和视频

-author -title分别是设置媒体文件的作者和title

-f选项是强制使用某种格式

-target type是使用预置的格式转换(可以转成dvd,vcd或svcd)

除此之外还有些更高级的选项,如设定vbr,或设定high quality,或者设定vbr的buff和max/min码率,象一般我们自用的dvd抓轨啦,DV转vcd或dvd啦,网上下载的电影转成vcd或 dvd都不一定需要用到它们。 具体的使用方法在man里面有介绍。简单明了。

 

1.视频音频格式转换

Ffmpeg能使用任何支持的格式和协议作为输入:

*比如你可以输入YUV文件:ffmpeg -i /tmp/test%d.Y /tmp/out.mpg

它将要使用如下文件:

/tmp/test0.Y, /tmp/test0.U, /tmp/test0.V,

/tmp/test1.Y, /tmp/test1.U, /tmp/test1.V,等等…

*你能输入原始的YUV420P文件:ffmpeg -i /tmp/test.yuv /tmp/out.avi

原始的YUV420P文件包含原始的YUV极性,每帧以Y平面开始,跟随U和V平面,它们是Y平面水平垂直的一半分辨率

*你能输出原始的YUV420P文件:ffmpeg -i mydivx.avi -o hugefile.yuv

*你能设置几个输入文件和输出文件

ffmpeg -i /tmp/a.wav -s 640x480 -i /tmp/a.yuv /tmp/a.mpg 上面的命令行转换音频文件a.wav和原始的YUV 视频文件 a.yuv到mpeg文件a.mpeg

*你也能同时转换音频和视频:ffmpeg -i /tmp/a.wav -ar 22050 /tmp/a.mp2

你可能感兴趣的:(linux,服务器,工具,avi,流媒体服务器,Codec)