h264/h265
xiaojun11-
勤能补拙,奋发ing
展开
-
HEVC标准概览-很概括很详细
HEVC的设计兼顾提高编码效率、降低传输压力、增强丢包容忍性、优化并行处理在内的多个目标。 本章将简要描述HEVC实现这些目标的关键技术以及标准HEVC编码器的处理流程。 解码流程和具体的语法会在之后的章节讨论。 一、编解码层面 HEVC的编码分层沿用了H.261以来的混合模式(帧间预测、帧内预测、2D转换)。下图表达了编码HEVC标准码流的基本过程。 HEVC_flow HEVC标准编码过程大致...转载 2017-03-20 18:48:18 · 6171 阅读 · 0 评论 -
ffmpeg多种码率控制方式的实现
感谢博主:http://blog.csdn.net/owen7500/article/details/51832035fmpeg是我们进行视频编解码常用的工具,而对于ffmpeg中编码时对码率的控制方式一直没找合适的教程,无意中在stackoverflow上发现了答案,在此进行总结备忘。视频编码器常用的码率控制方式包括abr(平均码率),crf(限制码率),cqp(固定质量),ffmpeg转载 2017-10-24 09:34:14 · 1258 阅读 · 0 评论 -
详细解析H.264——帧内预测
转载:http://6352513.blog.51cto.com/6342513/1120368 谢谢版主 在帧内预测模式中,预测块P是基于已编码重建块和当前块形成的。对亮度像素而言,P块用于4×4子块或者16×16宏块的相关操作。4×4亮度子块有9种可选预测模式,独立预测每一个4×4亮度子块,适用于带有大量细节的图像编码;16×16亮度块有4种预测模式,预测整个16×16亮度块,适用...转载 2017-03-31 15:06:48 · 4477 阅读 · 1 评论 -
运动补偿与运动估计
摘抄自:http://www.cnblogs.com/AndyJee/p/3724917.html 谢谢版主 自己注: 帧间编码:根据不同的参考值(前一帧的宏块)获得不同的预测值,找到最优的预测值并找到对应的运动矢量(也就是运动估计),并当前值减去预测值获得运动残差,进而保存 运动矢量和运动残差 运动补偿是通过先前的局部图像来预测、补偿当前的局部图像,它...转载 2017-03-28 18:22:10 · 10987 阅读 · 1 评论 -
JPEG图像压缩算法流程详解
转载:http://blog.csdn.net/carson2005/article/details/7753499多谢版主 例如,在静止图像编码标准JPEG中,在运动图像编码标准MJPEG和MPEG的各个标准中都使用了离散余弦变换。在这些标准制中都使用了二维的第二种类型离散余弦变换,并将结果进行量化之后进行熵编码。这时对应第二种类型离散余弦变换中的n通常是8,并用该公式对每个8x8块...转载 2017-03-22 17:54:22 · 1424 阅读 · 0 评论 -
DC系数和AC系数
转载自:http://www.itwendao.com/article/detail/280816.html IT问道 谢谢 DC系数: 直流系数 AC系数:交流系数 1、DC系数的中间格式计算 JPEG中为了更进一步节约空间,并不直接保存数据的具体数值,而是将数据按照位数分为16组,保存在表里面。这也就是所谓的变长整数编码VL...转载 2017-03-23 15:02:16 · 17157 阅读 · 0 评论 -
JPEG的DCT压缩原理,谁能通俗易懂解释一下?
转载自:https://segmentfault.com/q/1010000000510683 多谢看了这篇博文http://blog.csdn.net/jubincn/article/details/6882179,对JPEG的压缩原理还是有点模糊:1.JPEG经过离散余弦处理后为什么就能压缩图片大小?2.JPEG图片到底存储的是什么,压缩后减少的是什么?3.对每个像素点进行离散...转载 2017-03-20 13:48:19 · 6568 阅读 · 1 评论 -
二维DCT变换
写这篇文章的目的主要是为了给x264打好基础,x264用的是整数DCT变换,所以就先来说说DCT变换吧。DCT(Discrete Cosine Transform),又叫离散余弦变换,它的第二种类型,经常用于信号和图像数据的压缩。经过DCT变换后的数据能量非常集中,一般只有左上角的数值是非零的,也就是能量都集中在离散余弦变换后的直流和低频部分,下面我会用matlab来演示整个过程。1.转载 2017-03-20 11:16:38 · 1782 阅读 · 0 评论 -
x264中变量介绍
运动估计:me move estination,有运动shi'l原创 2014-07-21 23:57:50 · 515 阅读 · 0 评论 -
MP4中提取H.264码流
1.获取数据ffmpeg读取mp4中的H264数据,并不能直接得到NALU,文件中也没有储存0x00000001的分隔符。下面这张图为packet.data中的数据从图中可以发现,packet中的数据起始处没有分隔符(0x00000001), 也不是0x65、0x67、0x68、0x41等字节,所以可以肯定这不是标准的nalu。其实,前4个字0x000032ce表示的是nalu的长度...转载 2016-08-06 11:26:44 · 3522 阅读 · 0 评论 -
H264—MP4格式及在MP4文件中提取H264的SPS、PPS及码流
一、MP4封装格式的基本概念 1 MP4封装格式对应标准为 ISO/IEC 14496-12(信息技术 视听对象编码的第12部分: ISO 基本媒体文件格式/Information technology Coding of audio-visual objects Part 12: ISO base media file format) 附-- 标准免费下载: Freely Avail...转载 2016-08-06 11:07:38 · 745 阅读 · 0 评论 -
H.264中NALU、RBSP、SODB的关系 (弄清码流结构)
NALU:Coded H.264 data is stored or transmitted as a series of packets known as NetworkAbstraction LayerUnits. (NALU单元) RBSP :A NALU contains a Raw Byte Sequence Payload, a sequence of bytes c转载 2016-08-05 18:04:34 · 750 阅读 · 0 评论 -
x264 参数详解【很强大、很细致,不再为不懂啥意思很烦恼】
主要是最下面部分,x264参数介绍(二、分析和视频可用性信息)【 翻译 】x264参数介绍(一、帧类型和码率控制)2010年10月2日评论 发表评论翻译自:http://mewiki.project357.com/wiki/X264_Settings,水平有限,勿吝指教。第二部分:http://blog.yikuyiku.com/?p=2206转载 2016-08-02 10:10:23 · 10499 阅读 · 0 评论 -
X264码率控制总结1——ABR,CQP,CRF
1. X264显式支持的一趟码率控制方法有:ABR, CQP, CRF. 缺省方法是CRF。这三种方式的优先级是ABR > CQP > CRF.[cpp] view plaincopyif ( bitrate ) rc_method = ABR; else if ( qp || qp_constant ) rc_method = CQP; else...转载 2018-03-23 16:31:05 · 687 阅读 · 0 评论 -
FFmpeg 中的一些参数意义(tbr, tbn, tbc)
一、系统打印命令解析在此命令执行过程中,我们可以看到如下数据:1、ffmpeg在运行过程中需要用到的lib库如下 libavutil 52. 47.101 / 52. 47.101 libavcodec 55. 37.102 / 55. 37.102 libavformat 55. 19.103 / 55. 19.103 libavdevic...转载 2018-03-27 11:03:39 · 11954 阅读 · 1 评论 -
HEVC/H.265理论知识(2)——profile、level、tier
转载自:http://www.itdadao.com/articles/c15a782132p0.html一、profile(档次)、level(水平)、tier(等级)存在的目的是为了让不同应用之间相互兼容 二、profile、level、tier之间的关系 1、档次规定了码流中使用了哪些编码工具和算法 2、水平规定了对于档次、等级所对应的解码器处理负担和存储容量参数,主要包括采样率、分...转载 2017-03-08 16:56:00 · 3017 阅读 · 0 评论 -
HEVC牛人博客
http://blog.sina.com.cn/s/blog_520811730101ja19.html HM代码级别的分析 : http://www.voidcn.com/blog/HEVC_CJL/list-19.html转载 2015-03-16 18:38:21 · 873 阅读 · 0 评论 -
HEVC/H265 文档获得
HEVC approved by ITU-T and ISO/IEC x265下载地址: http://x265.org/developers.htmlHM10. 下载地址 : "Geneva, 25 January 2013 – A new video coding standard building on the PrimeTime Emmy award w...转载 2015-03-04 11:12:28 · 5642 阅读 · 0 评论 -
Win8+VS2010(32位)下编译x265
相信很多朋友都尝试过编译x265,本人之前总是一头雾水,根据其x265官网的介绍尝试了好几种办法,一直没有搞定,还装了很多东西,什么yasm、Intel编译器和Cmake之类的,后来发现我把问题想得太复杂了,现介绍我在VS2012平台下编译x265的方法。前期准备工作:1、x265开源代码。2、系统预安装Cmake软件。3、安装yasm和vld。具体步骤如下:第一步:下载x...转载 2015-03-24 17:16:48 · 1507 阅读 · 0 评论 -
H.265(HEVC)深度解析
数字视频的超高清潮流奔腾向前,帧率从30 fps向60fps、120fps甚至240fps进发,与此同时,物理媒介日薄西山,内容正通过有形无形的网络在世界各个角落的终端设备上传递。高度密集的数据给带宽和存储带来巨大挑战,当前主流的H.264开始不敷应用,而新一代视频编码标准H.265似乎成为了数字4K时代的“救世主”。 H.265又称为HEVC(全称High Efficiency V...转载 2017-03-10 16:16:34 · 27293 阅读 · 2 评论 -
x265 命令行参数大全(比较详细)
除非一个参数被标记为 CLI ONLY,否则该参数也被x265_param_parse() 支持。CLI使用getopt 函数来解释命令行参数,长短版本的参数都可以使用,长参数在不引起歧义的情况下可以截断成短参数。API用户必须把完整的参数名传递给 x265_param_parse()。Preset和tune 有特殊的含义,API用户需要在调用x265_param_parse()设置其他参数之前使...转载 2017-03-21 11:34:25 · 13870 阅读 · 1 评论 -
HEVC最优CU划分确定的过程
HEVC中CU有64x64,32x32,16x16,8x8四种,对于一个大的LCU,应该如何划分CU才能使得RDCo最小,我们知道HM中是采用遍历递归的形式进行计算的,但是具体的流程又是怎么样的?1,首先对于一个大的LCU即64x64的块,我们首先把他当作一个CU,计算出这个CU最佳的预测模式,并记录当前划分模式下的最佳预测数据。2,然后我们对当前LCU进行划分,划分成4个32x32的CU...转载 2017-04-06 19:12:40 · 1138 阅读 · 1 评论 -
HEVC学习(十二) —— CU的最终划分
转载:http://blog.csdn.net/HEVC_CJL/article/details/8275260 谢谢版主 相信会有不少人对如何确定CU最终的划分有所困惑(包括我在内,刚开始接触时也不知道该怎么做),我觉得很大的一个原因就是CU是递归划分的,这就导致在寻找确定最佳分割位置时比较困难。 其实,解决问题的办法说难也不难,关键在于思路的转换,既然对于xCompres...转载 2017-04-07 13:54:21 · 852 阅读 · 0 评论 -
hevc帧内预测
H.264一共规定了3种大小的亮度帧内预测块:4*4、8*8和16*16,色度分量的帧内预测块都是基于8*8大小的块进行的。其中,4*4和8*8大小的亮度块包含9种预测模式(垂直、水平、DC、左下对角线模式、右下对角线模式、垂直向右模式、水平向下模式、垂直向左模式和水平向上模式),而16*16大小的亮度块和8*8大小的色度块只有4种预测模式(DC、水平、垂直和Plane)。需要注意的是“4*4和...转载 2017-04-21 14:47:28 · 1652 阅读 · 0 评论 -
关于对H264码流的PS的封装的相关代码实现
转载:http://www.cnblogs.com/lidabo/p/6604988.html 1、写在开始之前: 最近因为新工作要维护别人留下的GB模块代码,先熟悉了流程,然后也试着封装了下ps流,结果也能通过测试正常预览了,当然,其中开发读文档的头疼,预览花屏,卡帧的事情都有遇到,当时慢慢的看文档,整理逻辑,也就都顺利解决了,下面把大致的一些流程代码贴出来分享下...转载 2018-06-01 09:53:42 · 296 阅读 · 0 评论 -
h264源码阅读笔记
H.264标准写得比较繁复,所以考虑在浏览完Whitepaper之后就开始研读X264代码。X264代码风格还是比较清晰简洁的。根据对标准得理解,Picture Order Count在Slice解码的一开始就被提及:I0 B1 B2 P3 B4 B5 P6I0 P3 B1 B2 P6 B4 B5于是I0的POC是0,P3的POC是3,B1是1……为了支持H264复杂的帧存机制,...转载 2018-03-28 23:59:18 · 833 阅读 · 0 评论 -
H.264 中 SAD SATD及常见知识点
264标准只定义了码流的格式编码器实现是各公司自己的事,只要形成的码流符合标准就行解码器必须按照这个格式来,这样任何符合标准的码流都可以解出来Q:什么是SAD,SAE,SATD,SSD,SSE,MAD,MAE,MSD,MSE?A:SAD(Sum of Absolute Difference)=SAE(Sum of Absolute Error)即绝对误差和SATD(Sum of Abs...转载 2018-03-28 13:17:49 · 1984 阅读 · 0 评论 -
h264中profile和level的含义
Profile是对视频压缩特性的描述(CABAC呀、颜色采样数等等)。Level是对视频本身特性的描述(码率、分辨率、fps)。简单来说,Profile越高,就说明采用了越高级的压缩特性。Level越高,视频的码率、分辨率、fps越高。一些移动设备(手机、游戏机、PMP)由于性能有限,不支持全部高级视频压缩特性和高分辨率图像,只支持基础压缩特性和分辨率低一些的图像。为了让这个限制更加清晰明转载 2016-08-01 23:44:43 · 16010 阅读 · 0 评论 -
x264优化笔记
当初做x264优化时,一个人在摸索,一点点在改进,也记录下了一些东西,现在看来,有的相当琐碎,而且也没多大价值,然而这也是自己当初的一种经历,以后工作了,估计就再不会接触H.264了,现在写下来,或许能对刚入门的人有点帮助吧。 2008-01-16 9:011.将所有的X264_LOG用LOG_printf代替,去掉common.c中的x264_log,log_defa转载 2014-09-15 21:31:39 · 1910 阅读 · 0 评论 -
PS流格式
概念:将具有共同时间基准的一个或多个PES组合(复合)而成的单一的数据流称为节目流(Program Stream)。ES是直接从编码器出来的数据流,可以是编码过的视频数据流,音频数据流,或其他编码数据流的统称。ES流经过PES打包器之后,被转换成PES包。构成:PS包由包头、系统头、PES包3部分构成。包头由PS包起始码、系统时钟基准(SCR-System Clock Refere转载 2014-09-02 14:33:48 · 625 阅读 · 0 评论 -
传输流(TS)
1.TS格式介绍 TS:全称为MPEG2-TS。TS即"Transport Stream"的缩写。它是分包发送的,每一个包长为188字节(还有192和204个字节的包)。包的结构为,包头为4个字节(第一个字节为0x47),负载为184个字节。在TS流里可以填入很多类型的数据,如视频、音频、自定义信息等。MPEG2-TS主要应用于实时传送的节目,比如实时广播的电视节目。MPEG2-TS格式的特点...转载 2014-09-02 14:35:39 · 1084 阅读 · 0 评论 -
用实例分析H264 RTP payload .
H264的RTP中有三种不同的基本负载(Single NAL,Non-interleaved,Interleaved)应用程序可以使用第一个字节来识别。在SDP中也说明了本次会话的属性SDP 参数下面描述了如何在 SDP 中表示一个 H.264 流:. "m=" 行中的媒体名必须是 "video". "a=rtpmap" 行中的编码名称必须是 "H264".. "a转载 2014-09-02 14:27:37 · 612 阅读 · 0 评论 -
MPEG2 PS和TS流格式--非常重要
l PSI的PID是特定的,含PSI的数据包必须周期性的出现在传输流中。PMT (Program Map Table )节目映射表PMT所在分组的PID由PAT指定,所以要先解出PAT,再解PMTPMT中包含了属于同一节目的视频、音频和数据原始流的PID。找到了PMT,解多路复用器就可找到一道节目对应的每个原始流的PID,再根据原始流PID,去获取原始流。如下图:PID1和PID2分别对应...转载 2014-09-02 14:33:57 · 1744 阅读 · 0 评论 -
FU-A分包方式,以及从RTP包里面得到H.264数据和AAC数据的方法
RFC3984是H.264的baseline码流在RTP方式下传输的规范,这里只讨论FU-A分包方式,以及从RTP包里面得到H.264数据和AAC数据的方法。1、单个NAL包单元12字节的RTP头后面的就是音视频数据,比较简单。一个封装单个NAL单元包到RTP的NAL单元流的RTP序号必须符合NAL单元的解码顺序。2、FU-A的分片格式数据比较大的H264视频包,被RTP分片发转载 2014-09-01 17:35:34 · 516 阅读 · 0 评论 -
将H264与AAC打包Ipad可播放的TS流的总结
由于要在crtmpserver中实现Http Live Streaming ,本人花了接近3个星期的时间,研究将H264与AAC打包为TS流并能在Ipad上通过HTML5播放,由于没有任何现成代码可供参考,打包代码全部手写,打包格式主要参考ISO/ICE 18318-1.pdf。期间碰到很多问题,走了不少弯路,符合标准的TS不一定能在Ipad上播放,但是Ipad上播放的TS一定是符合标准的,可以说转载 2014-09-14 21:18:17 · 1267 阅读 · 0 评论 -
RTP封装h264
网络抽象层单元类型 (NALU):NALU头由一个字节组成,它的语法如下: +---------------+ |0|1|2|3|4|5|6|7| +-+-+-+-+-+-+-+-+ |F|NRI| Type | +---------------+F: 1个比特. forbidden_zero_b转载 2014-09-01 16:49:46 · 392 阅读 · 0 评论 -
x264_param_t结构体参数注释解析
typedef struct x264_param_t{/* CPU 标志位 */unsigned int cpu;int i_threads; /* 并行编码多帧 */int b_deterministic; /*是否允许非确定性时线程优化*/int i_sync_lookahead; /* 线程超前缓冲 */转载 2014-09-01 13:54:28 · 700 阅读 · 0 评论 -
H.264学习 之 步步为营,我的切身体会 [复制链接]
第一步:啥也别说,先下载一些东西 视频文件(xxx.yuv,xxx.y4m) 下载:http://trace.eas.asu.edu/yuv/index.html 下载:http://media.xiph.org/video/derf/ x264.exe (下载见下面的参考)转载 2014-08-29 10:58:53 · 826 阅读 · 0 评论 -
linux下编译x264,生成lib库
1、下载x264-snap-shot源码2、./configure --disable原创 2014-08-13 11:19:28 · 1164 阅读 · 0 评论 -
H264参数语法文档: SPS、PPS、IDR
H.264码流第一个 NALU 是 SPS(序列参数集Sequence Parameter Set)对应H264标准文档 7.3.2.1 序列参数集的语法进行解析SPS参数解析// fill sps with content of p[cpp] view plaincopyint InterpretSPS (VideoParameters *p_Vid, DataPartition转载 2014-08-21 21:33:46 · 633 阅读 · 0 评论