ffmpeg基础知识

来源:互联网 发布:矩阵型组织结构 编辑:程序博客网 时间:2024/06/05 08:06

容器(Container)
容器就是一种文件格式,比如flv,mkv等。包含下面5种流以及文件头信息。
流(Stream)
是一种视频数据信息的传输方式,5种流:音频,视频,字幕,附件,数据。
帧(Frame)
帧代表一幅静止的图像,分为I帧,P帧,B帧。
编解码器(Codec)
是对视频进行压缩或者解压缩,CODEC =COde (编码) +DECode(解码)
复用/解复用(mux/demux)
把不同的流按照某种容器的规则放入容器,这种行为叫做复用(mux)
把不同的流从某种容器中解析出来,这种行为叫做解复用(demux)
封装格式
封装格式的主要作用是把视频码流和音频码流按照一定的格式存储在一个文件中。现如今流行的封装格式如下表所示:
主要封装格式一览

由表可见,除了AVI之外,其他封装格式都支持流媒体,即可以“边下边播”。有些格式更“万能”一些,支持的视音频编码标准多一些,比如MKV。而有些格式则支持的相对比较少,比如说RMVB。
主要视频编码一览
这里写图片描述
由表可见,有两种视频编码方案是最新推出的:VP9和HEVC。目前这两种方案都处于研发阶段,还没有到达实用的程度。当前使用最多的视频编码方案就是H.264。
通常会见到的码率控制模式有
ABR [ Average Bitrate ](平均目标码率模式)
CBR [ Constant Bitrate ](固定码率模式)
2pass..3pass..npass(二次..三次..n次编码模式..严格来说也属于平均目标码率模式.但其码率 浮动较ABR高出不少.)
CRF [ Constant Ratefactor ] (固定码率系数模式)
QP [ Constant Quantizer ] (固定量化值模式)
但x264只提供三种码率控制模式..至于其他怎么搞出来后面再写..
三种模式为:
qp模式…bitrate模式..crf模式

下面挨个解释一下..需要注意的是三种码率控制方法不能共存,有其一不能有另外两个!
qp模式
即为固定量化值(Constant Quantizer)模式来编码视频..需要注意的是这里的量化参值为P帧的量化值..I 帧(IDR帧)和B帧的量化值又由ipratio和bpratio参数来确定..不过通常这两个参数无需手动设置..
简单点说qp模式就是:相对于压缩前的原视频来说..每一个 P 帧 ..I 帧 .. B帧都会固定的损失一部分质量..损失判定是固定的.但由于I P B帧的插入是不确定的..所以最终文件的大小是无法确定的.
设置为qp0时将产生无损的画面输出(输出文件一般会比源文件大出数倍以上)..并且相同视觉质量时..qp模式压出的视频文件比crf模式大..

bitrate模式
即为固定目标码率模式..(固定目标比特率模式)..x264会试图让最终文件的整体码率与给定的码率相等..这会使最终文件的大小是确定的..适用于精确控制体积..但由于这是一次编码..所以画质上不如同等体积的crf..故一般配合pass参数使用.

crf模式
即固定Ratefactor模式..如果说QP是固定量化器,bitrate是固定文件最终大小..那么crf则是则是固定“肉眼质量”..crf可以提供跟QP一样的视觉的质量..但是文件更小..
crf是通过降低那些“不那么重要”的帧的质量做到这一切的~..“不那么重要”意思是过于耗费码率又难以用肉眼察觉的帧….省下来的码率会用在其它更有效的帧里..
其实crf就是一个浮动qp模式..其按照特定的标准..根据人眼的需求..给予每帧不同的qp值 .但玩好crf模式..和aq..psy..qcomp等参数都脱不开关系..后面会讲到~

需要注意的是crf模式无法预测最终文件体积..

这里写图片描述

0 0
原创粉丝点击