P9 视频码率及其码率控制方式

前言 

                             

从本章开始我们将要学习嵌入式音视频的学习了 ,使用的瑞芯微的开发板

🎬 个人主页:@ChenPi

🐻推荐专栏1: 《C++_@ChenPi的博客-CSDN博客》✨✨✨ 

🔥 推荐专栏2: 《Linux C应用编程(概念类)_@ChenPi的博客-CSDN博客》✨✨✨

🛸推荐专栏3:《嵌入式音视频_@ChenPi的博客-CSDN博客》
🌺本篇简介  :本章主要讲解VI VENC模块和AI AENC模块的初始化及具体函数详解

01 什么是码率?

视频码率指的是数据传输单位数,也是指每秒钟传输的视频数据位数,单位是kbps千位/s。

通常来说码率越大,视频的精度越高。编码出来的视频文件,则会越接近原始YUV文件。

通常码率和分辨率息息相关。下面这张图就是分辨率和码率的关系

02 什么是码率控制方式?

码率控制指的是利用编码中的一些特殊手段控制图像的压缩比例,使其画面质量在不同的场景中保持一个最优的状态。

RV1126的码率控制方式,总共分为三种:

  1. CBR固定码率控制模式
  2. VBR可变码率控制模式
  3. AVBR码率控制模式。

2. 1. CBR控制码率详解

CBR指的是固定比特率,它指的是在统计时间内编码码率处于平稳状态。

这种方式的特点是码率调节会相对比较缓慢,它不会跟着图像的质量的波动去改变码率。

CBR控制模式一般用于网络流媒体视频编码。

  1. CBR的优点在于压缩速度非常快,并且码率很平稳不会出现码率跳变的情况。
  2. 但缺点也很明显,就是它不会根据画面的波动对码率进行节省,这样的话会导致每秒空间的浪费。在RV1126的API里面,CBR一般用平均比特率去表示。

从上图我们可以看出来,在RV1126的API里面。用

  • VENC_H264_CBR_S(H264的CBR控制模式)
  • VENC_MJPEG_CBR_S(MJPEG的CBR控制模式)
  • VENC_H265_CBR_S(H265的CBR控制模式)

2.2 H264_CBR结构体:

  1. u32Gop:关键帧间隔
  2. u32SrcFrameRateNum数据源帧率分子
  3. u32SrcFrameRateNum数据源帧率分母
  4. fr32DstFrameRateNum: 目标帧率分子
  5. fr32DstFrameRateDen 目标帧率分母
  6. u32BitRate:平均比特率[2000, 98000000]

2.3 H265_CBR结构体:

H265_CBR结构体的成员变量,跟H264_CBR结构体的成员变量是一样的。

2.4 MJPEG_CBR_S结构体:

  • u32Gop:关键帧间隔
  • u32SrcFrameRateNum数据源帧率分子
  • u32SrcFrameRateNum数据源帧率分母
  • fr32DstFrameRateNum: 目标帧率分子
  • fr32DstFrameRateDen 目标帧率分母
  • u32BitRate:平均比特率[2000, 98000000]

03 VBR控制码率模式详解

VBR指的是动态码率,它的作用是在统计时间内允许编码编率出现波动,这种波动可以使得编码图像质量变高。

VBR的特点是它是随着图像的复杂程度的不同而变化。假设在编码到简单图像的时候它会节省码率,而如果编码到一些相对复杂的图像它的码率将会提升。VBR模式一般使用在DVD上面。

VBR同样也有优缺点,VBR的优点是它的尽可能保证整个图像编码质量,利用VBR编码的图像很少会出现马赛克、画面丢失的情况。

但缺点同样也很明显,使用VBR编码出来的图像它的体积是不固定的。所以,它会根据画面的复杂程度去决定视频文件的大小,另外还有的是使用VBR进行编码的时候它的编码算法复杂度会变高,这就会导致解码端的复杂度升高。

在RV1126的API里面。

  1. VENC_H264_VBR_S(H264VBR控制模式)
  2. VENC_MJPEG_VBR_S(MJPEGVBR控制模式)
  3. VENC_H265_VBR_S(H265VBR控制模式)

VENC_H264_VBR_S结构体:

  • u32Gop:关键帧间隔
  • u32SrcFrameRateNum数据源帧率分子
  • u32SrcFrameRateNum数据源帧率分母
  • fr32DstFrameRateNum: 目标帧率分子
  • fr32DstFrameRateDen 目标帧率分母
  • u32MaxBitRate:最大比特率[2000, 98000000]

VENC_H265_VBR_S结构体:

H265_VBR结构体的成员变量,跟H265_CBR结构体的成员变量是一样的。

VENC_MJPEG_VBR_S的结构体:

  • u32SrcFrameRateNum数据源帧率分子
  • u32SrcFrameRateNum数据源帧率分母
  • fr32DstFrameRateNum: 目标帧率分子
  • fr32DstFrameRateDen 目标帧率分母
  • u32BitRate:平均比特率[2000, 98000000]

04 AVBR控制码率模式详解

AVBR全称叫适配式可变码率控制方式,它的很多思想跟VBR基本上是一致的。

但它比VBR强大的一点是这种控制方式能够自动检测当前编码场景是静止画面还是运动画面

若当前画面是静止画面则会主动降低码率、若当前画面是运动画面则会把码率主动提升。

AVBR适用于当前编码视频静止画面运动画面频繁出现的场景,所以AVBR码率控制方式经常用在大型体育比赛上面。

在RV1126的API里面。

  • VENC_H264_ AVBR_S(H264VBR控制模式)
  • VENC_MJPEG_AVBR_S(MJPEGVBR控制模式)
  • VENC_H265_AVBR_S(H265VBR控制模式)

4.1 VENC_H264_AVBR结构体:

  1. u32Gop:关键帧间隔
  2. u32SrcFrameRateNum数据源帧率分子
  3. u32SrcFrameRateNum数据源帧率分母
  4. fr32DstFrameRateNum: 目标帧率分子
  5. fr32DstFrameRateDen 目标帧率分母
  6. u32MaxBitRate:最大比特率[2000, 98000000]

VENC_H265_AVBR结构体和H264的也是一样的

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

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

相关文章

外包做了1个月,技术退步一大半了。。。

先说一下自己的情况,本科生,20年通过校招进入深圳某软件公司,干了接近4年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…

Java课程设计个人博客

目录 引言:在此说明在本次课设过程中所遇到的困难! 一、项目搭建的问题 Q1:Web项目应用啥么编译器编写? Q2:如何创建Web项目(MAVEN)? Q3:Tomcat服务器开头控制台显示乱码如何解决? Q4:Tomcat服务器怎么设置项目的…

2024最新腾讯云CVM服务器和轻量应用服务器有什么区别?

腾讯云轻量服务器和云服务器CVM该怎么选?不差钱选云服务器CVM,追求性价比选择轻量应用服务器,轻量真优惠呀,腾讯云服务器网txyfwq.com活动 https://curl.qcloud.com/oRMoSucP 轻量应用服务器2核2G3M价格62元一年、2核2G4M价格118元…

过滤器和拦截器

上篇文章我们学习了 Session 认证和 Token 认证,这篇我们来学习一下过滤器和拦截器,过滤器和拦截器在日常项目中经常会用到。 一、过滤器 1.1、理论概念 过滤器 Filter 是 JavaWeb 三大组件(Servlet、Filter、Listener)之一&am…

Mac 环境多JDK安装与切换

一、下载jdk 去Oracle官网上下载想要安装的jdk版本,M芯片选择arm架构的.bmg格式的文件。 https://www.oracle.com/java/technologies/downloads/。 二、安装jdk 2.1 双击下载的文件,安装步骤一步步点继续就好。 2.2 安装完成后会在/Library/Java/JavaV…

【Linux Shell】9. 流程控制

文章目录 【 1. if else 判断 】1.1 if1.2 if else1.3 if elif else1.4 实例 【 2. case 匹配 】【 3. 循环 】3.1 for 循环3.2 while 循环3.3 until 循环3.4 无限循环3.5 跳出循环3.5.1 break 跳出所有循环3.5.2 continue 仅跳出当前循环 【 1. if else 判断 】 1.1 if fi 是…

国际新产品开发专业认证-NPDP

👑NPDP认证是美国产品开发管理协会(PDMA)所发起的新产品开发专业认证,是国际公认的wei一的新产品开发专业认证。 ✍🏻NPDP考试每年考2次,分别在每年的5月和11月。考试一共200道单选题,做对150道及格通过考试。 &#x…

应用层

title: 应用层 date: 2023-12-20 21:03:48 tags: 知识总结 categories: 计算机网络 应用层:负责最直观的应用请求的封装、发起 一、域名系统DNS 连接在互联网上的主机不仅有IP地址,还有便于用户记忆的主机名字。域名系统DNS能够把互联网上的主机的名字…

亲测有效:腾讯云免费服务器30天申请流程

腾讯云免费服务器申请入口 https://curl.qcloud.com/FJhqoVDP 免费服务器可选轻量应用服务器和云服务器CVM,轻量配置可选2核2G3M、2核8G7M和4核8G12M,CVM云服务器可选2核2G3M和2核4G3M配置,腾讯云百科txybk.com分享2024年最新腾讯云免费服务器…

【Unity】如何在Unity中使用C#的NuGet 包资源

【背景】 Unity的脚本语言是C#,而C#有很多功能和能力可以通过nuget包提供。有没有办法把这些能力结合到Unity中一起使用呢?如果可以,那将大大扩展Unity中各类功能实现的便捷性。 【方法】 答案是:你可以! 获取Nuge…

创建第一个SpringMVC项目,入手必看!

文章目录 创建第一个SpringMVC项目,入手必看!1、新建一个maven空项目,在pom.xml中设置打包为war之前,右击项目添加web框架2、如果点击右键没有添加框架或者右击进去后没有web框架,点击左上角file然后进入项目结构在模块…

gem5学习(9):构建gem5——Building gem5

目录 一、Requirements for gem5 二、Getting the code 三、Your first gem5 build 1、gem5 binary types 四、Common errors 1、gcc版本过低 2、使用非默认版本的python 3、未安装M4宏处理器 4、Protobuf版本过低 前面的gem5学习(3)—&#xf…

基于Java SSM框架实现游戏论坛平台系统项目【项目源码+论文说明】

基于java的SSM框架实现游戏论坛平台系统演示 摘要 本论文主要论述了如何使用java语言开发一个游戏论坛平台的设计,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构、ssm 框架和 java 开发的 Web 框架,基于Werkzeug WSGI工具箱和…

react antd EditableProTable - 可编辑表格

与编辑表格外的内容联动 value 同 dataSource,传入一个数组,是 table 渲染的元数据 T[] undefined onChange dataSource 修改时触发,删除和修改都会触发,如果设置了 value,Table 会成为一个受控组件。 (value:T[])>void undefined recordC…

Hello 2024(A~D,F1)

新年坐大牢 A - Wallet Exchange 题意:共有俩钱包,每回合从其中一个钱包中拿走一块钱,谁拿走最后一块钱谁赢。 思路:奇偶讨论即可。 // Problem: A. Wallet Exchange // Contest: Codeforces - Hello 2024 // URL: https://cod…

BERT 模型是什么

科学突破很少发生在真空中。相反,它们往往是建立在积累的人类知识之上的阶梯的倒数第二步。要了解 ChatGPT 和 Google Bart 等大型语言模型 (LLM) 的成功,我们需要回到过去并谈论 BERT。 BERT 由 Google 研究人员于 2018 年开发&…

用通俗易懂的方式讲解:如何提升大模型 Agent 的能力?

大型语言模型(LLM)的出现带火了Agent。利用LLM理解人类意图、生成复杂计划并且能够自主行动的能力。Agent具有无与伦比的能力,能够做出类似于人类复杂性的决策和完成一些复杂的工作。 目前市面上已经出现非常多得Agent框架:XAgen…

MongoDB复制集原理

复制集高可用 复制集选举 MongoDB 的复制集选举使用 Raft 算法(https://raft.github.io/)来实现,选举成功的必要条件是大多数投票节点存活。在具体的实现中,MongoDB 对 raft 协议添加了一些自己的扩展,这包括&#x…

Mysql大数据量下流式查询优化:Jdbc中的useFetchSize参数及其原理解析

前言 最近我朋友公司有个需求场景:查询千万级数据量并写入txt文件的程序优化需求。 朋友找到我对程序进行优化, 不然饭碗不保......💦 下面就分享一下解决这个优化问题的过程和思路,并总结一下,在以后不要在踩同样的坑…

[算法]使用aes进行数据加密

一、需求 有一段信息需要进行安全加密。 二、方案 对称加密和非对称加密两种方案,其中由于公钥密钥的管理还未形成规范,因此考虑使用对称加密。其中,对称加密算法使用openssl中,关于aes的部分,输出结果为128位数据。…