H264视频压缩格式
H264简介
H.264从1999年开始,到2003年形成草案,最后在2007年定稿有待核实。在ITU的标准里称为H.264,
在MPEG的标准里是MPEG-4的一个组成部分-MPEG-4 Part 10,又叫Advanced Video Codec,因此常常称为MPEG-4AVC或直接叫AVC。
压缩算法
帧内编码
解决空间冗余
帧内有空间冗余
一帧图像,每8*8/16*16个像素点划分为一个块;
存储左边上边的像素点+一个预测方向(比如上下左右,平均);
预测方向就是为了解码出其他的像素点,插值算法,类似渐变算法
帧间编码
解决时间冗余
帧间有时间冗余,连续图像必然有大量重复像素(连续画面)
引出I帧、P帧、B帧、GOP序列的概念
I帧
-
帧内编码帧
-
自身可以独立通过解压算法形成一张完整的图片
-
每个GOP序列的第一个帧
-
随机访问的参考点
-
数据量最大
P帧
-
前向预测编码帧
-
将当前帧和前I帧、P帧比较,存储前帧没有的宏块,相似宏块记录索引
-
和I帧相似率25%左右
B帧
-
双向预测帧
-
当前帧和I帧、前后P帧比较,存储不相似的宏块,相似宏块记录索引
-
和I帧相似率75%左右
-
数据量最少
这样通过双向索引机制,就可以大大提高压缩效率
GOP序列
GOP图像序列 可以理解成一个场景,场景的物体都是相似的
一般都是I帧到下一个I帧之间的所有帧序列
解码顺序
B帧解码需要等待后一个P帧出来,才能结合I帧+后一个P帧解码出一帧
-
编码帧顺序:I B … B P B…B
-
解码顺序:I P B B … B B
播放时会按照pts对帧排序
H264码流结构
H264原始码流是由一个接一个的NALU包组成
注意:
- 传输码流之前要带上SPS、PPS,至少要发一次,然后发I帧,不然解码器解不出来
NALU结构
NALU由分割符(00 00 00 01)、头信息、编码数据构成
注意
-
对于FFmpeg解复用后,MP4文件读取出来的packet是不带startcode,但TS文件读取出来的packet带了startcode
-
播放MP4文件,其中的H264码流的每个NALU里面必须带startcode才能播放
头信息说明
T为负荷数据类型,占5bit
nal_unit_type:这个NALU单元的类型,1~12由H.264使⽤,24~31由H.264以外的应⽤
一般只需要关注T的5678即可
举例:
0x00 00 00 01 67...说明:分隔符:0x00 00 00 0167 二进制:0 11 00111F: 0R: 11T: 00111 = 7 --->表示该NALU单元是序列参数集
annexb模式
H264有两种封装结构
- 一种是annexb模式,传统模式,有startcode,SPS和PPS是在ES中,就是每个NALU=分割符+头信息+data
- 一种是mp4模式,一般mp4 mkv都是mp4模式,没有startcode,SPS和PPS以及其它信息被封装在container中,每一个frame前面是这个frame的长度
很多解码器只支持annexb模式,所以如果要解析码流,需要将MP4模式做转换,就是加上分割符和sps+pps
相关文章:
H264视频压缩格式
H264简介 H.264从1999年开始,到2003年形成草案,最后在2007年定稿有待核实。在ITU的标准里称为H.264, 在MPEG的标准里是MPEG-4的一个组成部分-MPEG-4 Part 10,又叫Advanced Video Codec,因此常常称为MPEG-4AVC或直接叫AVC。 压缩算…...
动态的中秋爱心演示送女友用python生成爱心软件文末附c++语言写法
用python生成爱心软件 用python生成动态爱心软件 目录 用python生成爱心软件 完整代码 代码解释 逐句解释 效果展示: 如何打包 c写法 完整代码 import turtledef draw_heart():love turtle.Turtle()love.getscreen().bgcolor("black")love.…...
macOS - 使用VLC
文章目录 关于 VLC安装查看帮助流媒体 MRL 语法:URL 语法:主程序 (core)音频视频截图:窗口属性: 子画面屏幕显示(OSD):字幕:覆盖:轨道设置:播放控制:默认设备:高级: 输入播放列表性能选项: 热键跳跃大小: 关于 VLC VLC media player VLC 是一款自由、开…...
java微服务项目整合skywalking链路追踪框架
skywalking官网网址:Apache SkyWalking 目录 1、安装skywalking 2、微服务接入skywalking 3、skywalking数据持久化 1、安装skywalking 下载skywalking,本篇文章使用的skywalking版本是8.5.0 Index of /dist/skywalkinghttps://archive.apache.org/…...
pandas 笔记: interpolate
一个用于填充 NaN 值的工具 1 基本用法 DataFrame.interpolate(methodlinear, *, axis0, limitNone, inplaceFalse, limit_directionNone, limit_areaNone, downcast_NoDefault.no_default, **kwargs) 2 主要参数 method 多种插值技术 linear: 默认值,使用线性插…...
应用程序接口(API)安全的入门指南
本文简单回顾了 API 的发展历史,其基本概念、功能、相关协议、以及使用场景,重点讨论了与之相关的不同安全要素、威胁、认证方法、以及十二项优秀实践。 根据有记录的历史,随着 Salesforce 的销售自动化解决方案的推出,首个 Web…...
JavaWeb概念视频笔记
学习地址:102.尚硅谷_Tomcat-Tomcat服务器和Servlet版本的对应关系_哔哩哔哩_bilibili 目录 1.JavaWeb的概念 2.Web资源的分类 3.常用的Web服务器 4.Tomcat服务器和Servlet版本的对应关系 5.Tomcat的使用 a.安装 b.目录介绍 c.如何启动 Tomcat 服务器 另一…...
网络请求【小程序】
一、get 二、post 1.获取相应数据 Page({/*** 页面的初始数据*/data: { inptValue:, isArr:[]},/*** 生命周期函数--监听页面加载*/onLoad(options) {},onSubmit(){// console.log(this.data.inptValue)//2.后台请求数据wx.request({url: https://tea.qingnian8.com/demoArt/…...
python 调用adb shell
目录 python调用 bat,启动新窗口,但是不能自动在进入shell 后执行提前设置的操作。 python启动cmd新窗口,但是不能自动在进入shell 后执行提前设置的操作。 python调用 bat,启动新窗口,但是不能自动在进入shell 后执…...
vue3 使用 vite 构建的项目打包后无法访问
解决办法: 1、安装 vitejs/plugin-legacy -D npm i vitejs/plugin-legacy -D2、vite.config.js 添加配置 import legacy from vitejs/plugin-legacy; export default defineConfig({plugins: [legacy({targets: [defaults, not IE 11]}),vue(),],base:./, // http…...
C语言指针详解(4)———找工作必看指针笔试题汇总
指针对于编程工作的重要性 C语言指针在找工作中具有重要性。以下是几个原因: 1.高效的内存管理:C语言指针可以帮助程序员高效地管理内存,包括动态内存分配和释放,以及数据的访问和操作。这对于开发性能优化的应用程序非常重要&am…...
03MyBatis-Plus中的常用注解
常用注解 TableName MyBatis-Plus根据BaseMapper中指定的泛型(实体类型名)确定数据库中操作的表,如果根据实体类型名找不到数据库中对应的表则会报表不存在异常 //向表中插入一条数据 Test public void testInsert(){User user new User(null, "张三", 23, "…...
Android 修复在 Settings 首页,按键盘方向键逐个单选
Android 修复在 Settings 首页,按键盘方向键逐个单选 问题现象问题分析解决办法 问题现象 在 Settings 主界面,按键盘方向键上下会直接整个选中,无法单条选中变色,而在二级页面中按方向键上下是正常的。 没有遥控器可以通过 adb…...
SpringMvc第六战-【SpringMvcJSON返回异常处理机制】
前言: 小编讲述了:JSR303的概念,应用场景和在具体实例的使用;和拦截器的应用 今天小编来讲述的为cJSON返回&异常处理机制,json返回就不用多说,毕竟大部分数据都是通过Json来传递数据的,异…...
idea-Tabnine
教程地址 Code Faster with AI Code Completions | Tabnine...
联通面试题
一、GC 1.1、目标 GC的主要作用是自动识别和释放不再使用的对象,回收其所占用的内存,以防止内存泄漏和内存溢出的问题。 1.2、如何实现 1.2.1、标记阶段 GC从根对象(如线程栈中的引用、静态变量等)开始,通过可达性…...
[计组03]进程详解2
目录 应用程序 系统调用 驱动 软件 再看进程 进程管理 如何管理 ? 创建一个进程 注意 PCB 文件描述表 进程相关重点 为什么有进程调度 虚拟空间地址 这次我们从更加详细全面的角度看一下进程在计算机中体系中的展现 应用程序 应用程序 调动 系…...
使用redis+lua通过原子减解决超卖问题【示例】
系列文章目录 一、SpringBoot连接MySQL数据库实例【tk.mybatis连接mysql数据库】 二、SpringBoot连接Redis与Redisson【代码】 三、SpringBoot整合WebSocket【代码】 四、使用redislua通过原子减解决超卖问题【示例】 五、SpringBoot整合Elasticsearch【代码示例】 文章目录 系…...
WebFlux异常处理:onErrorReturn和onErrorResume
1 缘起 最近在学习WebFlux, 处理异常时遇到些问题,比如,Java直接抛出的异常无法直接被onErrorReturn和onErrorResume捕获, 但是,在map或者flatMap等方法之后的异常又可以直接被捕获, 于是,进行…...
《动手学深度学习 Pytorch版》 4.5 权重衰减
4.5.1 范数与权重衰减 整节理论,详见书本。 4.5.2 高维线性回归 %matplotlib inline import torch from torch import nn from d2l import torch as d2l# 生成一些数据,为了使过拟合效果更明显,将维数增加到 200 并使用一个只包含 20 个样…...
数据脱敏的风险量化评估介绍
1、背景介绍 当前社会信息化高速发展,网络信息共享加速互通,数据呈现出规模大、流传快、类型多以及价值密度低的特点。人们可以很容易地对各类数据实现采集、发布、存储与分析,然而一旦带有敏感信息的数据被攻击者获取将会造成个人隐私的严重…...
SpringCloudGateway网关实战(三)
SpringCloudGateway网关实战(三) 上一章节我们讲了gateway的内置过滤器Filter,本章节我们来讲讲全局过滤器。 自带全局过滤器 在实现自定义全局过滤器前, spring-cloud-starter-gateway依赖本身就自带一些全局过滤器࿰…...
08在MyBatis-Plus中配置多数据源
配置多数据源 模拟多库场景 适用于多种场景: 多库(操作的表分布在不同数据库当中),读写分离(有的数据库负责查询的功能,有的数据库负责增删该的功能),一主多从,混合模式等 第一步: 模拟多库,在mybatis_plus数据库中创建user表,在mybatis_plus_1数据库中创建product表 --创建…...
Centos8安装docker并配置Kali Linux图形化界面
鉴于目前网上没有完整的好用的docker安装kali桌面连接的教程,所以我想做一个。 准备工作 麻了,这服务器供应商提供的镜像是真的纯净,纯净到啥都没有。 问题一:Centos8源有问题 Error: Failed to download metadata for repo ap…...
游戏开发初等数学基础
凑数图() 立体图形面积体积 1. 立方体(Cube): 表面积公式: 6 a 2 6a^2 6a2 (其中 a a a 是边长)。体积公式: a 3 a^3 a3 (其中 a a a 是边长)。 2. 球体(Sphere): 表面积公…...
svg图片代码data:image/svg+xml转png图片方法
把代码保存为html格式的文件中,用浏览器访问,即可右键保存 从AI软件或其它网站得到svg图片代码后,把他复制到下面源码上 注意:src""图片地址中,一些参数的含义 d‘这里是图片代码数据’ viewBox是图片显示区域,宽,高等 fill%23000000’这里表示颜色 ,后面6位0表示黑色…...
解决问题:Replace `‘vue‘;⏎` with `“vue“;`
使用vscode写vue文件的问题: Replace vue;⏎ with "vue"; error Replace v-model:value"xxx"placeholder"inputsearch prettier/prettier 7:38 error Insert ⏎ potentially fixable with the --fix option 原因:格式问题&a…...
ThinkPHP 5.0通过composer升级到5.1,超级简单
事情是这样的,我实现一个验证码登录的功能,但是这个验证码的包提示tp5的版本可以是5.1.1、5.1.2、5.1.3。但我使用的是5.0,既然这样,那就升个级呗,百度了一下,结果发现大部分都是讲先备份application和修改…...
计算机竞赛 多目标跟踪算法 实时检测 - opencv 深度学习 机器视觉
文章目录 0 前言2 先上成果3 多目标跟踪的两种方法3.1 方法13.2 方法2 4 Tracking By Detecting的跟踪过程4.1 存在的问题4.2 基于轨迹预测的跟踪方式 5 训练代码6 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 深度学习多目标跟踪 …...
一文了解大模型工作原理——以ChatGPT为例
文章目录 写在前面1.Tansformer架构模型2.ChatGPT原理3.提示学习与大模型能力的涌现3.1 提示学习3.2 上下文学习3.3 思维链 4.行业参考建议4.1 拥抱变化4.2 定位清晰4.3 合规可控4.4 经验沉淀 写在前面 2022年11月30日,ChatGPT模型问世后,立刻在全球范围…...
知名的网站建设公司/关键词免费下载
1.下列除哪组外都是镇心安神药组() A.龙骨、牡蛎 B.朱砂、磁石 C.龟板、鳖甲 D.珍珠、琥珀 E.珍珠母、紫贝齿 2.下列忌火煅的药物是() A.青礞石 B.牡蛎 C.朱砂 D.石决明 E.代赭石 3.既能镇惊安神,平肝潜阳…...
网上商城网站系统/公关公司
给表新增字段时,可能经常遇到错误:ORA-00054:资源正忙但指定以NOWAIT方式获取资源或者超时失效这种错误出现的情景在oracle 11.1 和 11.2 的版本中有点区别以下实验中 表 :create table hlb (id int); ,表中有数据,ddl…...
中移建设招标网站/黄页引流推广链接
文章目录词法分析正则表达式正则表达式的定义正则语言RE的代数定律正则定义例一例二有穷自动机FA的典型例子FA模型FA的表示FA定义(接受)的语言*最长子串匹配原则*有穷自动机的分类FA的分类*确定的有穷自动机* ( *DFA*)非确定的有穷自动机DFA与NFA的等价性带有“ε -边”的NFA从…...
陕西省人民政府采购网/曲靖seo
本文同步发布于 个人博客 前言 上周周赛因为忘记起床导致没打TAT 本次周赛战绩: rk5,总完成时间20min,还有奖品,好耶! A 2129.将标题首字母大写 题意 给出一个包含若干个单词的句子,把所有字母变为小写字母&#…...
网站宝建站/windows优化大师官方网站
您可以创建另一个组,并将www-data(如果您的Web服务器在www-data用户下运行)添加到该组,然后将该组分配给所有您希望访问的文件.或者,如果您只需要读取权限,而系统上的其他用户对您的文件具有读取权限也不是问题,那么只需更改文件的权限(在其他位置)以拥有对其他文件的读取权限.…...
专业做财经直播网站有哪些/百度小说排行榜2019
微信小程序不支持 html 标签,可以使用插件让小程序自动解析 html 标签并且正常显示.推荐组件 wxParse ,github 地址 https://github.com/icindy/wxParse/ 使用浅析: 1. 下载组件 2. 复制 wxParse 文件夹到项目中 3. 在需要解析 html 标签的页面 wxml 引入 wxParse.wxml ,并引…...