一、FFMpeg
1、FFMPEG简介
(1)MPEG
FFMPEG 全称Fast Forward MPEG,MPEG系列标准是由ISO/IEC制定的,主要应用于视频存储(DVD)、广播电视、因特网或无线网上的流媒体。ITU-T与ISO/IEC是制定视频编码标准的两大组织,ITU-T的标准包括H.261、H.263、H.264,两个组织也共同制定了一些标准,H.262标准等同于MPEG-2的视频编码标准,而最常用的H.264标准则被纳入MPEG-4的第10部分也叫AVC编码。
(2)FFMPEG
特别强大的专门用于处理音视频的开源库。你既可以使用它的API对音视频进行处理,也可以使用它提供的工具,如 ffmpeg, ffplay, ffprobe,来编辑你的音视频文件.还能转换数字音频、视频,并能将其转化为流,能在Linux、Windows、Mac OS X三大平台使用,采用LGPL或GPL许可证。
(3)主要功能
视频采集功能、视频格式转换、视频抓图、给视频加水印,视频转码,推流
(4)FF系列其他工具:
- FFPlay:不仅仅是播放器,也可以作为音视频数据图形化分析工具,ffplay也可以看到视频图像的运动估计方向、音视频波形等,同时也是测试ffmpeg的codec引擎、format引擎、filter引擎工具,还可以进行可视化的媒体参数分析
- FFProbe:查看多媒体文件详细信息
- FFServer:轻量流媒体,负责响应客户端的流媒体请求,把流媒体数据发送给客户端
2、FFMPEEG命令
(1)容器转换(格式转换)
ffmpeg -i input.avi (-acodec copy -vcodec copy) output.mp4
- -acodec copy -vcodec copy:拷贝音视频,解码和编码步骤省略,它可用于更改容器格式或修改容器级元数据,由于没有解码或编码,它非常快,并且没有质量损失
容器:容器就是一种文件格式,比如flv,mkv等。封装了流以及文件头信息
注:
- 流(Stream) :视频数据信息的传输方式,包含5种流:音频,视频,字幕,附件,数据
- 帧(Frame):视频帧代表一幅静止的图像,分为I帧,P帧,B帧。音频帧:一个AAC原始帧包含某段时间内1024个采样点相关数据,音频帧的播放时间 = 一个AAC帧对应的采样样本的个数 / 采样频率(单位为s)
- 编解码器(Codec):是对视频进行压缩或者解压缩,CODEC =COde (编码) +DECode(解码)
- 复用/解复用(mux/demux):复用:把不同的流按照某种容器的规则放入容器
(2)转码
ffmpeg -i input.mp4 -acodec copy -vcodec h264 out.mp4
- -i 后面是输入文件名。-acodec 后面是输出的音频编码格式,copy表示不转码直接拷贝,-vcodec 后面是要输出的视频编码格式。
- 注:
- -c:v与参数 -vcodec一样,表示视频编码器。c 是 codec 的缩写,v 是video的缩写
- h264(AVC MPEG-4 part-10) 最佳,但 Windows 系统默认不安装,可以单独安装libx264*
ffmpeg -i input.mp4 -s 640x480 -b 500k -vcodec h264 -r 29.97 -acodec libfaac -ab 48k -ac 2 out.mp4
附加选项:-r 指定帧率,-s 指定分辨率,-b 指定比特率;于此同时可以对声道进行转码,-acodec 指定音频编码,-ab 指定音频比特率,-ac 指定声道数,-g 指定GOP大小,海康摄像头默认配置50,ffmpeg默认12
修改视频分辨率:
ffmpeg -i input.avi -vf scale=320:240 output.avi