H.264编码

1.为什么要对视频进行编码

       视频是连续的图像序列,由连续的帧构成,一帧即为一幅图像,由于人眼的视觉暂留效应,当帧序列以一定的速率播放时,我们看到的就是动作连续的视频,这么多连续的图像数据如果不经过编码则数据量太大了。

2.H.264编码框架

H.264码流文件分为两层

(1)VCL(Video Coding Layer,视频编码层): 负责高效的视频内容表示,VCL数据即编码处理的输出,它表示被压缩编码后的视频数据序列。

(2)NAL (Network Abstraction layer,网络提取层): 负责以网络所要求的恰当的方式对数据进行打包和传送,是传输层。I不管在本地播放还是网络播放,都要通过这一层来传输。

VCL就是被压缩编码后的原始数据

将VCL数据封装到NAL单元中,才可以用于传输和存储

3.H.264码流分析

一般H.264编码器的默认输出为:起始码+NAL单元(NALU)。起始码为:0x00000001或者0x000001

(1)NAL单元

H.264的编码视频序列包括一系列的NAL单元。

一个NAL单元=一个原始字节序列负载(RBSP)+一个对应于视频编码的NAL头文件

H.264码流NAL单元序列如图

(2)NAL Header

通过解析NAL头部,可以确定每个NAL单元的帧类型IPB帧。

l帧:帧内编码帧,关键帧,l帧可以看作一个图像经过压缩之后的产物,可以单独解码出一个完整的图像。
P:前向预测编码,记录了本帧跟之前的一个关键帧(或P)的差别,解码时需要用之前缓存的画面叠加上本帧定义的差别,生成最终画面。
B帧:双向预测编码帧,记录了本帧与前后帧的差别,解码需要参考前面一个I帧或者P帧,同时也需要后面的P帧才能解码一张完整的图像。

NAL头的组成:

NAL头由一个字节组成,如下所示:

语法:禁止位(1位)、重要性指示位(2位)、NALU类型(5位)

|0|1|2|3|4|5|6|7|

|F|NRI| Type|

NAl头信息的每一位说明如表所示

01~23~7
简称FNRITYPE
全称forbidden_zero_bitnal_ref_idcnal_unit_type
中文禁止位重要性指示位NALU类型
作用当网络发现NAL单元有比特错误时,可设置该比特为1,以便接收方丢掉该单元标志该NAL单元用于重建时的重要性,值越大,越重要,取值为00~111~23表示单个NAL包,24~31需要分包或者组合发送。

nal_unit_type取值的含义如下:

    

(3)原始字节序列负载(RBSP)

每个NAL单元包含一个RBSP。典型的RBSP单元序列如图

每个单元都独立的NAL单元传送。NAL单元的信息头(1字节)定义了RBSP单元的类型,NAL单元的其余部分为RBSP数据。

RBSP各部分的解释:

RBSP描述
参数集PS序列的全局参数
增强信息SEI视频序列解码的增强信息
图像定界符视频图像的边界
编码片(Slice)的头信息和数据
数据分割DP片层的数据,用于错误恢复解码
序列结束符表明下一图像为IDR图像
流结束符表明该流中已没有图像
填充数据元数据,用于填充字节

片(Slice):
一帧图片经过 H.264 编码器之后,就被编码为一个或多个片 (slice),每片包含整数个宏块(至少一个宏块,最多包含整个图像宏块),NAL单元就是装载着这些片 (slice)的载体。

片的语法结构:片头规定了片的类型,属于哪个图像、有关的参考图像等;片的数据包含了一系列宏块和不编码数据。

4.H.264编码原理

       H.264编码的原理是通过利用帧内和帧间的相关性、运动估计、变换、量化和熵编码等技术来减小视频数据的体积,从而实现高效的视频压缩。解码器在接收到H.264编码的视频流后,通过反向过程将其还原为可视的视频序列,以实现视频的播放和显示。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/140094.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

正则表达式:整数

正则表达式:整数 校验字符串,为有效的整数。 校验规则 只能为:整数(包括:正整数、负整数、零) 不能为:非数值型的字符串 不能为:小数 不能为:一连串的0(比…

算法通关村第16关【青铜】| 滑动窗口思想

1. 滑动窗口的基本思想 一句话概括就是两个快慢指针维护的一个会移动的区间 固定大小窗口:求哪个窗口元素最大、最小、平均值、和最大、和最小 可变大小窗口:求一个序列里最大、最小窗口是什么 2. 两个入门题 (1)子数组最大平…

使用 Elasticsearch、OpenAI 和 LangChain 进行语义搜索

在本教程中,我将引导您使用 Elasticsearch、OpenAI、LangChain 和 FastAPI 构建语义搜索服务。 LangChain 是这个领域的新酷孩子。 它是一个旨在帮助你与大型语言模型 (LLM) 交互的库。 LangChain 简化了与 LLMs 相关的许多日常任务,例如从文档中提取文本…

vue3 - Element Plus暗黑模式适配、切换及自定义颜色

GitHub Demo 地址 在线预览 Element Plus 2.2.0 版本开始支持暗黑模式,启用方式参考 Element Plus 官方文档 - 暗黑模式 demo通过Element Plus和VueUse 的 useDark 方法实现具有自动数据持久性的响应式暗黑模式。 安装 npm install element-plus --save npm in…

一个关于 i++ 和 ++i 的面试题打趴了所有人

前言 都说大城市现在不好找工作,可小城市却也不好招人。 我们公司招了挺久都没招到,主管感到有些心累。 我提了点建议,是不是面试问的太深了,在这种小城市,能干活就行。 他说自己问的面试题都很浅显,如果答…

HUAWEI华为荣耀猎人游戏本V700 i7独显2060(FRD-WFD9)原装出厂Windows10系统工厂模式(含F10还原)

华为HONOR荣耀笔记本原厂系统镜像包,安装恢复时自动创建F10一键智能还原功能 链接:https://pan.baidu.com/s/1_px_3Fr9qEE6jExz1eKKKg?pwdk6uc 提取码:k6uc 系统自带所有驱动、出厂主题壁纸LOGO、Office办公软件、华为电脑管家等预装程序…

ChatGLM GPT原理介绍

图解GPT 除了BERT以外,另一个预训练模型GPT也给NLP领域带来了不少轰动,本节也对GPT做一个详细的讲解。 OpenAI提出的GPT-2模型(https://openai.com/blog/better-language-models/) 能够写出连贯并且高质量的文章,比之前语言模型效果好很多。GPT-2是基于Transformer搭建的,相…

SQL Server数据库中了360后缀勒索病毒怎么办,勒索病毒解密数据恢复

随着互联网的发展,网络安全问题日益凸显,勒索病毒已经成为当今数字威胁中的一大主要犯罪行为之一。其中,360后缀勒索病毒作为一种常见的数据库攻击形式,对数据库的安全性提出了极大挑战。近期我们收到很多企业的求助,企…

QT:使用行编辑器、文本编辑器、单选按钮、水平布局、垂直布局做一个小项目

widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QLineEdit> //行编辑器 #include <QTextEdit> //文本编辑器 #include <QRadioButton> //单选按钮class Widget : public QWidget {Q_OBJECTpublic:Widget(QWidget *pare…

项目进度网络图

概念 项目网络图是项目所有活动及其之间逻辑关系&#xff08;依赖关系&#xff09;的一个图解表示&#xff0c;并从左到右来表示项目的时间顺序。 可手工编制也可用计算机实现。可包括整个项目的全部细节&#xff0c;也可包含一个或多个概括性活动&#xff0c;还相应伴有一个…

uniapp中vue3使用uni.createSelectorQuery().in(this)报错

因为VUE3中使用setup没有this作用域&#xff0c;所以报错 解决办法&#xff1a;使用getCurrentInstance()方法获取组件实例 import { getCurrentInstance } from vue;const instance getCurrentInstance(); // 获取组件实例 const DOMArr uni.createSelectorQuery().in(ins…

智荟康午休课桌椅成为第十届中国慈善展览会公益亮点产品

第十届中国慈善展览会&#xff08;以下简称“慈展会”&#xff09;于9月15日至17日在深圳会展中心隆重举办&#xff0c;此次展会为期3天&#xff0c;主要围绕“共建现代化慈善&#xff0c;聚力高质量发展”的主题&#xff0c;重点聚焦聚力民生福祉&#xff0c;将打造“一展多元…

asrpro 天问BLOCK 总结

ASRPRO芯片信息 主频240MHz 640KByte SRAM 2-4M FLASH (https://haohaodada.com/jpeguploadfile/twen/ASRPRO/asr_pro_core.pdf) 下载 &#xff08;注意最好用好点的USB转TTL或是网方的下载器&#xff0c;否则会怀疑人生&#xff09; 下载程序步骤 安装VSCODE 在字符模式下&a…

CSDN热榜分析3:实现领域热榜的爬取

文章目录 领域热榜爬取函数领域热榜按钮功能实现 热榜分析系列&#xff1a; CSDN热榜分析&#x1f525; UI界面&#x1f525; 领域热榜 领域热榜爬取函数 CSDN热榜共有21个子领域&#xff0c;包括C、云原生、人工智能、前沿技术、软件工程、后端、Java、JavaScript、PHP、P…

程序员的快乐如此简单

最近在GitHub上发起了一个关于Beego框架的小插件的开源仓库&#xff0c;这一举动虽然看似微小&#xff0c;但其中的快乐和意义却是无法用言语表达的。 Beego是一个开源的Go语言Web框架&#xff0c;它采用了MVC架构模式&#xff0c;并集成了很多常用的功能和中间件。小插件是指…

手机也可以将声音转为字幕!支持中英日韩4种语言

快去看看你的华为手机有没有这个功能——AI字幕&#xff0c;可以将手机里的音频转换为文字&#xff08;以字幕形式展现&#xff0c;可保存在手机备忘录&#xff09; AI字幕有什么用途&#xff1f; 1. 在听觉不太好使的环境下&#xff0c;将音频信息转化到视觉&#xff08;文本…

C++中的Template

模板的概念 建立通用的模具&#xff0c;大大提高复用性 模板不可直接使用 函数模板 函数模板语法 函数模板作用&#xff1a; 建立一个通用函数&#xff0c;其函数返回值类型和形参类型可以不具体制定&#xff0c;用一个虚拟的类型来代表。 语法&#xff1a; template&l…

LeetCode_二叉树_中等_1448.统计二叉树中好节点的数目

目录 1.题目2.思路3.代码实现&#xff08;Java&#xff09; 1.题目 给你一棵根为 root 的二叉树&#xff0c;请你返回二叉树中好节点的数目。「好节点」X 定义为&#xff1a;从根到该节点 X 所经过的节点中&#xff0c;没有任何节点的值大于 X 的值。 示例 1&#xff1a; 输…

有名管道及其应用

创建FIFO文件 1.通过命令&#xff1a; mkfifo 文件名 2.通过函数: mkfifo #include <sys/types.h> #include <sys/stat.h> int mkfifo(const char *pathname, mode_t mode); 参数&#xff1a; -pathname&#xff1a;管道名称的路径 -mode&#xff1a;文件的权限&a…

linux、windows的pip一键永久换源[清华源、中科大、豆瓣、阿里云]

前言 本文概述&#xff1a;linux、windows操作系统一键将pip下载源永久设置为国内下载源&#xff0c;避免了使用临时源需要到处找镜像地址的麻烦。 作者介绍&#xff1a;作者本人是一名人工智能炼丹师&#xff0c;目前在实验室主要研究的方向为生成式模型&#xff0c;对其它方向…