- 博客(18)
- 资源 (6)
- 收藏
- 关注
原创 12. SPS/PPS写码流
这一步就开始正式产生码流了。h264码流最开头都是固定的sps/pps2个NALU结构。产生码流才是编码的最终目的。这里才是第一步。这里不会说明SPS/PPS的句法结构,因为官方spec已经有了明确的说明。
2025-11-20 22:53:22
291
原创 11. 参考帧列表刷新
参考帧列表刷新,是在每一帧编码前,构建可用于参考的L0和L1列表。这里要区别3个列表,第一个是h->frames.reference,这个是所有可用作参考帧的帧列表。h->fref[0]是用于当前帧L0搜索的帧列表,h->fref[1]是用于当前帧L1搜索的帧列表。
2025-11-18 19:21:39
356
原创 10. 计算帧代价
在x264中,帧代价具体来说就是使用一个固定的公式对当前帧计算出一个“数值”,这个数值就是帧代价。是 x264 编码器中一个非常核心的函数,用于计算帧代价。它的主要任务是快速估算编码一帧(或一组帧)所需的“代价”(Cost),这个代价是编码器进行智能决策的核心依据。特别是在码率控制和场景切换中依赖这个代价值。
2025-11-14 22:56:18
958
原创 9.帧类型决策
x264的帧类型决策是一个复杂的过程,用于决定每一帧的最佳类型(IDR帧、I帧、P帧或B帧),以求在压缩效率、视频质量和编码速度之间达到最佳平衡。对h264编码来说,帧类型决策其实并不是必须的。只要第一帧是IDR帧即可,后续帧可以编码为任意帧类型。我们需要帧类型决策,只是出于压缩效率、视频质量的考虑。所以本节只讲述实时流时固定GOP情况下的帧类型决策,这种决策方式相对简单。
2025-10-15 10:57:50
296
原创 6.PPS初始化
本节先讲述pps的概念,之后说明pps在x264中的实现。H.264(也称为 H.264/AVC)中的 PPS(Picture Parameter Set,图像参数集)是其码流中一种非常重要的参数集,它包含了解码一个或多个图像所需的信息。PPS 通常与 SPS(Sequence Parameter Set,序列参数集)协同工作。SPS 包含了作用于整个视频序列的全局参数,如分辨率、帧率、Profile 和 Level 等。而 PPS 包含的参数则更多地与单帧或一组帧图像的解码相关。
2025-09-25 09:22:48
776
原创 0.专栏引言
本专栏目不会过多阐述算法或理论,也不会详解每一行代码,而是通过讲述编码流程中的所有关键且必须的操作以及这个操作关联的h.264spec或理论,让视频编码初学者对编码过程有一个清晰的、全景式的认知。目前关于h.264视频编码的优秀书籍、网络文章非常多:有侧重于理论算法的,有侧重于代码实现的,有侧重于性能优化的,也有一些文章把算法和理论结合起来讲解。x264-0.164.r3194中自带了win10编译工程,可以直接用vs2022打开编译。(3)每个步骤的原理、代码的对照讲解。(2)一个典型的编码流程。
2025-09-24 10:20:28
271
原创 5.SPS初始化
本节先讲述sps的概念,之后说明sps在x264中的实现。H.264 的 SPS(Sequence Parameter Set,序列参数集) 是存放整个视频序列全局参数的核心元数据,它包含了解码视频流所必需的基本信息。H.264 的 SPS(序列参数集) 存在的核心目的是为解码器提供解读整个视频序列所必需的 全局参数和配置信息。它就像是整个视频的“说明书”或“解码钥匙”,确保了视频流能够被正确解析和重建。H.264 的 。
2025-09-23 17:37:58
277
原创 4. h.264编码最简化流程
本节说明h264的一个最小化的编码流程。什么是最小化的编码流程?h264的编码过程可以很复杂,也可以相对简单,这里把那些不必要的过程或者工具或者feature都去掉(例如b帧),同时如果某个编码步骤有多种方式选择,尽量选择最简单的那一种(例如选择CAVLC而不是CABAC、自适应量化选择最低档)。这样不仅不会影响对h264编码过程的理解,也可以排除不必要的干扰。
2025-09-17 18:03:04
657
原创 3.编码前处理:RGB转YUV
前面提到原始数字化视频一般用RGB格式来表示,但编码器一般只接受YUV格式(更具体一点是YUV420格式)作为输入,这就需要对原始数字视频进行一道格式转换。本节说明为什么编码器只接受YUV格式作为输入,以及如何进行RGB到YUV的格式转换。YUV格式也是数字图像的一种表示方法,它将亮度和色度信息分离开,常用于图像和视频处理领域。在YUV格式中,“Y”代表亮度,也就是我们通常所说的灰度值,它决定了图像的明暗程度。而“U”和“V”则代表色度,它们负责描述图像的色彩和饱和度,帮助我们区分不同的颜色。
2025-09-12 11:31:00
893
原创 2.视频的数字化表示
上一节提到了,视频本质是一些连续的静态图像的按照特定的间隔去显示或呈现,人眼看到这一场景后,就会在大脑中认为这是连续动态的视频。这一节讲述视频的数字化表示,更准确地说是,原始视频的数字化表示,用来和压缩视频区分开。
2025-09-10 19:19:54
1297
原创 1.视频的本质
视频技术已经成为现代数字世界的核心组成部分,从流媒体服务到视频会议系统,无处不在。了解视频编码的基础知识不仅是音视频开发人员的必备技能,也是广大技术爱好者深入理解数字媒体工作原理的关键。本文将全面介绍视频的本质。
2025-09-10 10:57:05
999
转载 GNU内联汇编
汇编语言---GCC内联汇编 GCC支持在C/C++代码中嵌入汇编代码,这些代码被称作是"GCC Inline ASM"(GCC内联汇编);一、基本内联汇编GCC中基本的内联汇编非常易懂,格式如下:__asm__ [__volatile__] ("instruction list");其中,1.__asm__:它是GCC定义的关键字asm的宏定义(#define __
2011-10-24 18:38:48
1116
转载 Windows Xp sp2 升级为 sp3
本文是转载的,经过本人的测试确实有用!特来分享。 现在我给大家发布一个盗版XPSP2系统升级SP3的方案,如下:敬告:1、本升级方案切实、可行,请各位拟采纳本方案升级的用户请在升级前备份好原系统,(GHOST备份或其他)以备不测!2、本升级方案仅仅针对WindowsSP2系统升级
2011-07-28 12:18:14
6571
原创 透明窗口的实现
这里的透明窗口指的是 透明子窗口。具体应用是 透明按钮。就是 在按钮上贴上位图,位图与按钮的父窗口背景融合。实现透明效果。(1)强制父窗口重绘 父窗口不能设置CLIPCHILD属性,因为只要父窗口重绘,子窗口(按钮)也需要重绘。如果是父窗口的重绘引发的子窗口重绘,那么需要
2011-07-28 10:10:53
1143
原创 VFW_视频截取
我在做一个小的视频聊天软件的过程中,充分利用了vfw提供的各种特性。下面分几个部分讲述我对vfw的认识。视频截取 视频聊天软件中,由一端到另一端的视频流先后要经历 视频截获、视频帧压缩、视频帧传输、视频帧解压缩、视频显示。这里就讲述视频截取我的看法。 第一
2011-07-19 20:49:45
1435
原创 线程局部存储区(TLS)-之我见
(1)TLS的机制原理 主要的数据结构就是两个,一个就是进程范围的全局索引数组,再一个就是线程范围的指针数组。这两个数组的大小是一样的,ms保证这两个数组的大小至少为TLS_MINIMUM_AVAILABLE。全局索引数组只是用来保存索引,也就是整型数据,指针数组只是用来
2011-07-09 22:11:12
796
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅