H.264
dreamxiang68
Good good study, day day up.
展开
-
H.264的NAL单元
每个NAL单元是一个一定语法元素的可变长字节字符串,包括包含一个字节的头信息(用来表示数据类型),以及若干整数字节的负荷数据。一个NAL单元可以携带一个编码片、A/B/C型数据分割或一个序列或图像参数集。 NAL单元的头信息结构如图3所示,NAL单元按RTP序列号按序传送。其中,T为负荷数据类型,占5bit;R为重要性指示位,占2个bit;最后的F为禁止位,占1bit。具体如下: (1转载 2012-01-07 17:25:11 · 4762 阅读 · 1 评论 -
AVC/H264编码教程(九)
“快速P帧跳过(Fast Pskip)”(E)被使用以后,x264会加速其编码过程,但有时候会导致在单调的场景或精细的渐变画面中产生人为编码的痕迹。如果你很在意这些问题和现象,不勾选“快速P帧跳过”会有一定的帮助。禁止该选项(强制编解码器彻底地检测每一个区块)之后,对全局的质量会产生及其微小的提升,以及一个细微却很明显的速度下降。因此我建议如果不是十分必要的话,勾选该选项。然而,如果你使用Trel转载 2012-02-12 02:42:59 · 1104 阅读 · 0 评论 -
AVC/H264编码教程(十二)
两个滑动条的初始设置都是0,这是为什么呢?这是能够在去块和细节保留之间取得计量平衡以产生最高质量的标准值。然而,如果你对默认的0,0编码的结果不满意,可以参考下面的意见:不要超过-3到2的范围(对两个滑动条来说都是如此)。一般地说,超过2会使解码的结果过于模糊,而低于-3会使结果看起来有点过于锐利——感觉也不会好,因为所有的掩盖都被去除了,细节的缺乏只会显得更加突出。如果你转载 2012-02-12 02:45:41 · 1226 阅读 · 0 评论 -
AVC/H264编码教程(七)
B帧“偏差(Bias)”(N)用于改变x264对B帧的使用。这个数值越高,x264就会越频繁地插入B帧。例如将这个数值设定为100会强制x264使用由框格M所指定的最大数量的B帧;然而,这个结果可以由简单地去掉勾选“Adaptive”(P)来得到。将这个值设定为-100则意味着几乎不使用任何B帧——实际上,对大多数情况来说就是一帧都不使用。对大多数视频来说,理想的B帧使用量在选择偏差值为0的时候往转载 2012-02-12 02:41:48 · 1052 阅读 · 0 评论 -
AVC/H264编码教程(十一)
去马赛克教程(Deblocking Guide)AVC格式内置了一个极其实用的特性,它可以消除马赛克和其他人为编码的瑕疵,而这些问题曾经使得AVC之前的那些格式饱受困扰。它在AVC的编码中相当实用,由于AVC是构筑在这个滤镜之上的事实以及你可能经历到的在视频中存在过多的马赛克以及人为编码的瑕疵(糟糕的片源),一般来说在正常情况下不要禁止这个去块插件。然而,因为它会占用大量的解码时间,如果解码器转载 2012-02-12 02:44:17 · 1231 阅读 · 0 评论 -
AVC/H264编码教程(四)
编码:高速度,高质量这一部分介绍达到编码质量和编码速度的最佳组合的必要步骤。以下是在将编码速度提升到最高的情况下,制作最高质量的AVC编码的推荐设置。“关键帧增益(%)(Keyframe boost (%))”(A.)控制关键帧(I帧、节点帧、转场帧(I-frames, intra frames, the “scene-changer” frames))超出其他P帧而被增益的质量多少。转载 2012-02-12 02:39:33 · 1821 阅读 · 1 评论 -
AVC/H264编码教程(十)
x264生成的AVI文件的FourCC(K)是其中(指AVI容器中)的视频流的标识符。如果没有特别指定,Xvid生成的AVI文件具有“XVID”的FourCC。对AVC文件来说,H264是一个可以被广泛接受和支持的FourCC,依照AVC 1.1标准所建议,你最好保持其默认的H264。CABAC,即双向适应二进制算法编码(L),是x264的main profile中的一项能够允许视频流的构转载 2012-02-12 02:43:35 · 1248 阅读 · 0 评论 -
怎么判断一帧的开始
一帧可能有几个SLICE的!你要把所有的SLICE定位出来,然后再找到每个SLICE的起始宏块的地址,地址为0的话就是一帧开始了! 的确,除去sps和pps,单纯从0x0000000101和0x0000000105来看,直接是看不出帧的边界的,只是一个个的slice的边界罢了,但是一个slice的起始宏块的地址是0,则代表该slice是一帧的第一个slice,故也就是一帧的开始了。 当转载 2012-04-05 12:35:19 · 1861 阅读 · 0 评论 -
音视频同步
这几天搞文件回放,视频格式是H264,音频是PCM,使用FFMPEG来读取音视频,然后用ffmpeg来解码显示,所有的一切还算顺利,但音视频同步花了我很多时间,总也搞不清楚为什么会差很多。音视频同步的原理当然是根据音频的pts来控制视频的播放,也就是说在视频解码一帧后,是否显示以及显示多长时间是通过该帧的PTS与同时正在播放的音频的PTS比较而来的,如果音频的PTS较大,则视频显示完毕准备下一帧的转载 2012-05-14 17:13:16 · 789 阅读 · 0 评论 -
AVC/H264编码教程(八)
下一个选项卡:其他(More...)“分块检测(Partition Decision)”(A),也可以理解为“Subpixel Refinement Quality”,是一个控制x264关于运动估算的范围的重要特性。选择菜单包含了一个具有7个选项的选单,依次从最低的质量“1(Fastest)”到最高的质量“6b(RDO on B-frames)”。要记住使用质量较高的选项会导致x264在运转载 2012-02-12 02:42:26 · 1242 阅读 · 0 评论 -
AVC/H264编码教程(六)
下一个选项卡:体积与帧(MBs&Frames)区块的搜索和确定被“区块(Partitions)”标题之下在框格J中的选项所控制。该选项通过增加精度来提升编解码器的质量和压缩效率,获得更高的质量输出。作为普遍的规则,编解码器在可视信息上进行的搜索类型越多,它就能够更精确、更有效率地预算和编码,所以我推荐勾选它们全部。然而,有一个特殊的情况需要了解,这将在下一条中提到。“8×8变换(8x8 T转载 2012-02-12 02:41:15 · 1240 阅读 · 0 评论 -
H.264中的RTP
RTP可通过发送冗余信息来减少接收端的丢包率,会增加时延,与冗余片不同的是它增加的冗余信息是个别重点信息的备份,适合于非平等保护机制。相应的多媒体传输规范有: (1)分组复制多次重发,发送端对最重要的比特信息分组进行复制重发,使得保证接收端能至少正确接收到一次,同时接收端要丢弃已经正确接收的分组的多余备份。 (2)基于分组的前向纠错,对被保护的分组进行异或运算,将运算结果作为冗余信转载 2012-01-07 17:27:08 · 1036 阅读 · 0 评论 -
RTP学习(二)RTP/RTCP/RTSP协议初探
一.产生的背景随着互连网的发展,人们已经不满足于传统的HTTP,FTP和电子邮件等文本信息和服务,而对内容丰富多彩的多媒体信息,服务以及多媒体通信方式提出了需求,包括声音,图象,图形,视频信息等等,而这些不但传输的数据量大而且对交互性和实时性要求很高。这时,基于HTTP的TCP协议无法达到要求,故产生RTP协议来进行多媒体数据实时传输。二.RTP/RTC转载 2012-01-18 14:51:43 · 1104 阅读 · 0 评论 -
RTP学习(一):流媒体协议(RTP/RTCP/RTSP)
流媒体指的是在网络中使用流技术传输的连续时基媒体,其特点是在播放前不需要下载整个文件,而是采用边下载边播放的方式,它是视频会议、IP电话等应用场 合的技术基础。RTP是进行实时流媒体传输的标准协议和关键技术。一、流媒体简介随着Internet的日益普及,在网络上传输的数据已经不再局限于文字和图形,而是逐渐向声音和视频等多媒体格式过渡。目前在网络上传输音频/视频 (Audio/Vid转载 2012-01-18 15:48:19 · 1898 阅读 · 0 评论 -
RTP学习(三)RTP/RTCP/RTSP数据包格式
H.264 视频 RTP 负载格式一、H.264的网络抽象层单元(NALU)NALU 头由一个字节组成, 它的语法如下: +---------------+ |0|1|2|3|4|5|6|7| +-+-+-+-+-+-+-+-+ |F|NRI| Type | +---------------+转载 2012-01-18 15:27:35 · 6045 阅读 · 0 评论 -
AVC/H264编码教程(一)
为了充分利用本教程,我们最好对这些编码相关的词汇及其用法有一个了解。1、编解码器(Codec):压缩器(Compressor)/解压缩器(Decompressor)。这里,x264是一个编解码器,也被称作“编码器(encoder)”。Divx是一个编解码器,Xvid也是一个编解码器。如果你下载了DTS_x264的程序包,你会得到一个编码器(压缩视频的部分)和一个被称为“解码器(decoder)转载 2012-02-12 02:35:48 · 2091 阅读 · 0 评论 -
AVC/H264编码教程(二)
编码次数(应当选择何种编码模式)如果你想要得到一个确定的文件体积,我推荐采用二次编码的模式。例如,你希望你生成的文件体积为精确的170.00MB,那么你就需要采用二次或三次编码。严格地说,一次编码针对的是那些严重缺乏时间或者并不期望得到高质量输出的人。二次编码能够满足大部分人的需要,它可以生成高质量的文件和确切的文件体积。然而,单次编码模式有时候会被用于恒定质量的输出。如果你想要编码得到的是一转载 2012-02-12 02:37:47 · 4753 阅读 · 0 评论 -
AVC/H264编码教程(三)
多次编码模式如果你希望你的视频在编码结束后得到一个特定的确切体积,你就需要使用多次编码模式。在编码类型菜单(A.)中选择“多次编码 - 第一次编码(Multipass – First Pass)”或者“多次编码 - 第一次编码(快速)(Multipass – First Pass (Fast))”。由于人们热衷于使用三次编码来获得最理想的质量,所以可以考虑使用“快速”的第一次编码模式。转载 2012-02-12 02:38:50 · 2980 阅读 · 0 评论 -
AVC/H264编码教程(五)
D.,E.和F.的焦点集中在所谓的量化限制上,同样是只能用在比特率可控的模式中。对于大多数的编码来说,你无需接触到其中的任何一个。“最小QP(Min QP)”(D.)设定你的视频在任意一点所能达到的最小量化值(最高质量)。如果你不是打算要在一个低分辨率的视频上实现超高比特率的编码,我的建议值是从10到15。类似地,设定你的视频所能达到的最高量化值(最低质量)。这个设定甚至会更加困难,所以我推荐保持转载 2012-02-12 02:40:36 · 1477 阅读 · 0 评论 -
判断H264码流的关键帧
关键帧就是I frame: 最简单的办法是找0x65或0x25(I frame启始位),或者去找0x67或0x27(SPS)和0x68或0x28(PPS)后面的完整包。SPS和PPS后面必然跟着I frame。原创 2012-03-30 10:48:36 · 3809 阅读 · 0 评论