帧类型 选项 “帧”基础知识: 影片可以看作是由一张张连续的图片组成的,每幅图片就是一帧。压缩的视频由3种不同类型的帧(Intra (I) frames (也叫 key frames),Predictive (P) 和 Bidirectional (B) frames)组成。 特定类型的帧之间可以参考,意思是一幅帧有时仅需保存自身与被参考帧的不同之处即可。不过参考模式会导致错误延续传播,即 X 帧出错,参考它的 Y帧也会出错,那么参考 Y 帧的 Z 帧也会出错。。。,后果很严重,所以视频里一定要有不能被参考的帧。 I 帧需要包含完整图像信息,所以压缩的少,体积大。在视频播放中,跳跃式快进(快退)时需要 I 帧,有的视频快进后黑屏,就是在新的播放位置还没有找到 I 帧引起的。 P 帧保存自身与 I 帧或其它 P 帧之间的差异。P 帧可以被当作参考帧,它需要包含足够多的信息,由于采用运动补偿压缩技术,P 帧比 I 帧保存的内容少。 B 帧也是保存自身与其它帧之间的差异,它既可以参考它前面的帧也可以参考它后的帧(播放顺序),但是它不能作为参考帧(特殊的"B-frame pyramid" 除外)。H.264 支持"B-frame pyramid",这种特殊的 B 帧可以被另外的连续 B 帧参考,除此之外,B 帧不能被其它帧参考。B 帧的压缩最大,包含的信息最少。 图像质量高、压缩率高的视频就是I、P、B 帧的完美结合。
Keyint 默认值: 250 设置 x264 输出流中两个IDR 帧(也叫 keyframes 关键帧。IDR英文原意为“瞬间解码刷新”)之间的最大间隔帧数。也可以定义“无限”从而不再插入非场景转换 IDR 帧。 IDR 帧就像视频流里的‘分隔符’,位于它前后(播放顺序)的帧之间是不能相互参考的。而且 IDR 帧也是 I 帧,因此它也不能参考其它帧。这些特性意味着它们可以作为视频跳跃播放时的新开始点。 一般情况下 I 帧比 P 或 B 帧体积大的多(在低运动场景中常常是10倍或更大),当和低 VBV 设置并用时会给码率控制带来极大的麻烦。关于这种情况,参考 --intra-refresh。 默认设置适合大多数视频。但当用于蓝光、广播、生活录像或其它专业录像时,可能需要较小的 GOP (图像组。一个GOP就是一组连续的画面。)长度(常常为fps 的1倍左右)。 参照: --min-keyint, --scenecut, --intra-refresh
intra-refresh 默认值: Off 禁用 IDR 帧,取而代之的是 x264 对位于 --keyint 位置的帧采用宏区块内编码方式。这样做的好处是可以获得比使用 IDR 帧更恒定的帧大小,对要求低时延的视频流更有利。同时也增加了丢包后的视频流恢复能力。这个选项会降低压缩率,因此仅在确有必要时才使用。 个人理解:IDR 帧虽然也是 I 帧,即本身是自解码帧,不需要参考其它帧来解码。但是 IDR 帧内部各宏区块之间是互相参考的,如果传输过程中某宏区块丢失,会导致整帧无法解码。
Bframes 默认值: 3 设置 x264 可以使用的最大连续 B 帧数量。 如果没有 B 帧,典型的 x264 流的帧类型就像:IPPPPP...PI。如果设置 --bframes 2,两个连续的 P 帧将被 B 帧代替,就像:IBPBBPBPPPB...PI。 除了 B 帧可以参考后面的帧(播放顺序)外,B 帧和 P 帧差不多。向后参考可以极大提高压缩率。B 帧的平均质量由 --pbratio 控制。 有趣的现象: • x264 偶尔需要区分两种不同类型的 B 帧。一个‘B’帧可以参考另一个用于被其它帧参考的 B 帧(见 --b-pyramid,这里的 ‘b’指的是参考了别的B帧的帧,而 B 不是。假如你看到既‘b’又有‘B’,就是这个意思。当不需要区分的时候,用‘B’代表所有的 B 帧。) • 欲详细了解 x264 压缩时如何把候选帧确定为 P 或 B 帧,请参考http://article.gmane.org/gmane.comp.video.ffmpeg.devel/29064。这种情况下,帧类型看起来就像(播放顺序)(如果 --bframes 3):IBBBPBBBPBPI。 参照: --no-b-adapt, --b-bias, --b-pyramid, --ref, --pbratio, --partitions, --weightb
b-adapt 默认值: 1 设置放置 B 帧决策算法。控制 x264 如何在 P 或 B 帧之间抉择。 0.关闭。总是选择 B 帧。与老的 no-b-adapt 选项相同。 1. 快速算法,较快的,当 --b-frames 值较大时速度会略微加快。采用这种模式时,基本都会使用 --bframes 16。 2.最优算法,较慢的,当 --b-frames 值较大时速度会大幅度降低。 注:当采用多遍编码时,仅需在决定帧类型的第一遍编码中使用。
b-bias 默认值: 0 控制用 B 帧代替 P 帧的可能性。值大于0增加采用 B 帧的可能性,小于0则相反。这个数没有度量单位。范围从 -100 到 100。值100不保证都是 P 帧,值-100不保证没有 P 帧(真想没有 P 帧可以使用 --b-adapt 0)。 仅当你感觉能比 x264 更好的控制码率的时候采用。 参照: --b-frames, --ipratio
b-pyramid 默认值: normal 允许 B 帧作为其它帧的参考帧。不设置,就只能参考 I 或 P 帧。尽管高质量的 I/P 帧作为参考帧更有价值,但 B 帧也可以作为参考帧。作为参考帧的 B 帧将被量化至 P 帧 和普通 B 帧之间(所谓的半量化)。 --bframes 至少为2时B-pyramid 才开始工作。 压制蓝光时,使用'none' 或 'strict'。 • none: 不允许 B 帧作为参考帧。 • strict: 蓝光标准强制性规定:每个 minigop 中只允许一个 B 帧作为参考帧。 • normal: 每个 minigop 中允许任意数量 B 帧作为参考帧。 参照: --bframes, --refs, --no-mixed-refs
sar 默认: 未设置 以 宽:高 格式指定编码器使用的视频源的采样纵横比(Sample Aspect Ratio (SAR))。综合使用 SAR 和 帧尺寸可以做出依赖显示纵横比(Display Aspect Ratio (DAR))的可变形(anamorphic)输出,公式为:DAR = SAR x width/height 建议:假如使用 resize 滤镜和变形视频源的话,应该指定。 参考:http://en.wikipedia.org/wiki/Asp ... age%29#Distinctions 译者说明:“可变形”是种特殊应用,欲详细了解可以参考“细说DVD的画面比例”这篇文章:http://www.tfcc.cn/dvd/2004-8-25_14-36-56_1259.html