瑞芯微rk3568移植openbmc(五)----关于novnc h265 webcodec硬解码

news2024/11/13 15:15:50

         本章没有什么实质内容,其实在第四节调好了H264的webcodec以后,H265仅仅只需要改下参数,其他的都交给webgl去处理就行了,没有什么大的变化,vp8、vp9、h264、h265处理都一样,仅仅只是参数的变化,不得不说谷歌浏览器做的确实让开发人员用起来很舒服。

        下面简单说明一下H264和H265的配置:webcodec的示例代码如下:

webcodecs/main.js at main · w3c/webcodecs · GitHub

         这几个参数有部分是固定的,如H264中avc1.就是固定不变的,后面的42002A实际上是H264中配置的profile和level的值,如果确实不清楚自己配置的多少也没关系,通常这个值存在H264的SPS的NAL单元中(一般都是首帧),抓取一帧H264的流就清楚了,如下图所示:00  00  00 01表示一帧的开始,67表示此帧为SPS帧,紧接着的42 C0 2A即表示profile和level了,上述webcodec的参数改为此值就行:avc1.42c02a

         而H265中就复杂了,目前尚未完全搞懂H265的参数结构。以下讲述仅供参考,如有大佬能解惑不胜感激。H265的参数值表示方式和H264完全不同,其表示Profile.Flags.TierLevel.Constraints,比H264多了一个VPS NAL,而webcodec的参数信息就存在于VPS当中,H265的webcodec前缀可以为hev1或hvc1,以一帧H265为例:帧头仍为00 00 00 01, 40表示当前是一帧VPS NAL单元,01表示当前是main profile,如果是02则表示main 10 profile,78表示TierLevel为120

      如果以命令:ffprobe -v quiet -print_format json -show_streams 1.h265 查询当前帧的信息可以看到:profile为Main,level为120,Flags即为has_b_frames:0,组合起来即为:hvc1.1.0.L120.xxhvc1.1.0.H120.xx,具体更详细的信息目前尚不清楚,本人只能靠实际环境来调试了,目前测试配置为hvc1.1.0.L120.00hvc1.1.0.L120均可以正常解码

{
    "streams": [
        {
            "index": 0,
            "codec_name": "hevc",
            "codec_long_name": "H.265 / HEVC (High Efficiency Video Coding)",
            "profile": "Main",
            "codec_type": "video",
            "codec_time_base": "1/30",
            "codec_tag_string": "[0][0][0][0]",
            "codec_tag": "0x0000",
            "width": 1920,
            "height": 1080,
            "coded_width": 1920,
            "coded_height": 1080,
            "closed_captions": 0,
            "has_b_frames": 0,
            "pix_fmt": "yuv420p",
            "level": 120,
            "color_range": "tv",
            "refs": 1,
            "r_frame_rate": "30/1",
            "avg_frame_rate": "30/1",
            "time_base": "1/1200000",
            "disposition": {
                "default": 0,
                "dub": 0,
                "original": 0,
                "comment": 0,
                "lyrics": 0,
                "karaoke": 0,
                "forced": 0,
                "hearing_impaired": 0,
                "visual_impaired": 0,
                "clean_effects": 0,
                "attached_pic": 0,
                "timed_thumbnails": 0
            }
        }
    ]
}

         实测H264与H265硬解不管是从代码修改上,还是清晰度异或是帧率上都没有太大区别,仅仅只是H265比H264稍稍省一点点带宽而已,协议理论上H265比H264能省30%~40%,实际测试起来也就10%左右的差距,对应VNC应用来说这点流量差距几乎可以忽略,因H264和JPEG Tight编码比起来本身已经是非常非常省流量了,H265相对于H264省的流量比起JPEG Tight编码那就可以几乎忽略不计

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

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

相关文章

Winform粉丝提问1——winform怎么在设计界面找到代码里的控件

前言: 今天订阅《Winform从入门到精通》的粉丝在VIP群里面问我一个问题,我感觉这个问题应该是初学者都会遇到的,所以我写了这篇文章来帮助初学者来理解这个问题,问题如下: 假设我在Form1界面上添加了两个Label&#x…

建筑行业为什么要数字化转型?

建筑行业为什么要数字化转型? 建筑行业作为国民经济的重要支柱产业之一,其生产过程繁琐、复杂,且产业链条长,涉及众多领域。 然而,目前传统的建筑模式已经无法适应行业的发展需求,建筑行业的数字化转型已…

PasteSpider之项目-服务-环境介绍

在PasteSpider中,项目和服务是重要的对象,只有理解什么是项目什么是服务后配置起来才不会稀里糊涂的! 项目 PasteSpider中的项目和我们平时说的项目意思一样,比如你要开发一个在线客服系统(项目),一个商城系统(项目),…

平台资金提现解决方案之实现单笔转账到支付宝账户功能

大家好,我是小悟 使用场景 不管是做APP、电脑网站、手机网站还是小程序,为了推广基本上都离不开用户分佣的场景。 换句话说就是在其平台内为每个用户设置“电子钱包”功能,而电子钱包在平台那里只是一串数字,这就需要平台为用户…

ESP32CAM的IDF环境开发

首先,我们需要先搭建一个IDFvscode的开发环境,然后再下载源码 esp32-cam 它这个源码有很多文件,我们可以将它分解到我们之前已有的idf环境中,首先是打开我们下载的文件路径 esp32-web-cam/esp-idf/components下面: 这…

【Kafka】SASL认证的Kafka客户端代码示例(spring-kafka和原生客户端)

文章目录 spring-kafka原生客户端Tips spring-kafka 添加依赖&#xff1a; <dependency><groupId>org.springframework.kafka</groupId><artifactId>spring-kafka</artifactId><version>2.6.3</version></dependency>添加spr…

pytorch 39 yolov5_obb的onnx部署及其优化

进行部署要求配置opencv和onnxruntime环境,这里不累述。 1、模型导出 yolov5_obb项目的使用可以参考:https://hpg123.blog.csdn.net/article/details/129366477 下载yolov5s_csl_dotav1_best.pt,并执行以下命令,得到yolov5s_csl_dotav1_best.onnx python export.py --we…

【Java】文件类 File 中的文件操作与文件读写

文件操作 File 类 属性 修饰符及类型属性说明static StringpathSeparator路径分隔符&#xff0c;String 类型表示static charpathSeparator路径分隔符&#xff0c;char 类型表示 构造方法 方法签名说明File(File parent, String child)根据父目录 File 对象 孩子路径&…

JavaSE学习进阶day05_01 Collection集合

第九章 Collection集合 9.1 集合概述 在前面基础班我们已经学习过并使用过集合ArrayList<E> ,那么集合到底是什么呢? 集合&#xff1a;集合是java中提供的一种容器&#xff0c;可以用来存储多个数据。 集合和数组既然都是容器&#xff0c;它们有什么区别呢&#xff…

华特转债上市价格预测

华特转债 基本信息 转债名称&#xff1a;华特转债&#xff0c;评级&#xff1a;AA-&#xff0c;发行规模&#xff1a;6.46亿元。 正股名称&#xff1a;华特气体&#xff0c;今日收盘价&#xff1a;93.75元&#xff0c;转股价格&#xff1a;84.22元。 当前转股价值 转债面值 / …

如何成为一名优秀的自动化测试开发工程师?

目录 前言 精通编程语言 掌握自动化测试框架 熟悉测试方法和流程 熟练使用测试工具 具备团队协作能力 学习新技术和工具 以下是更为具体的建议&#xff1a; 总结 前言 自动化测试作为软件测试领域中发展最快的一个分支&#xff0c;已经成为了许多企业提升软件质量和效…

C语言断言函数的应用

对于断言&#xff0c;相信大家都不陌生&#xff0c;大多数编程语言也都有断言这一特性。简单地讲&#xff0c;断言就是对某种假设条件进行检查。 在 C 语言中&#xff0c;断言被定义为宏的形式&#xff08;assert(expression)&#xff09;&#xff0c;而不是函数&#xff0c;其…

vue element-ui web端 引入高德地图,并获取经纬度

发版前接到一个临时新需求 &#xff0c;需要在web端地址选择时用地图&#xff0c;并获取经纬度。 临阵发版之际加需求&#xff0c;真的是很头疼&#xff0c;于是赶紧找度娘&#xff0c;找api。 我引入的是高德地图&#xff0c;首先要去申请key &#xff0c; 和密钥&#xff0c;…

【Typora-使用手册】Typora使用手册 常用设置 常用快捷键

【Typora-使用手册】Typora使用手册 & 常用设置 & 常用快捷键 1&#xff09;Typora简介1.1.Typora是什么1.2.下载地址1.3.下载注意事项 2&#xff09;Markdown语法总结2.1.标题编写2.1.1.大标题2.1.2.小标题 2.2.单选框2.3.删除线2.4.表情包2.5.字体加粗2.6.斜体2.7.表…

4.HDFS概述

如果说HDFS是存储,则Yarn就是cpu和内存,mapreduce就是程序。 1.HDFS文件块大小 HDFS中的文件在物理.上是分块存储(Block) ,block默认保存3份块的大小可以通过配置参数(dfs blocksize)来规定,默认大小在Hadoop2 .x版本中是128M,老版本中是64M。 解释:块的大小:10ms*100*…

分布式链路追踪—SkyWalking

文章目录 1. 总览2. 为什么要使用分布式链路追踪3. 了解OpenTracingOpenTracing数据模型 4. 使用分布式链路追踪的好处5. SkyWalking相关问题思考5.1 如何自动采集数据5.2 如何跨进程传递5.3 traceId如何保证全局唯一5.4 请求量大&#xff0c;采集数据对性能的影响 1. 总览 2. …

ES6 总结

概述 笔记内容为参考《JavaScript 高级程序设计 (第4版)》相关内容进行 ES6 部分知识的总结。主要涉及的知识是变量声明、对象解构、函数和对象的扩展内容、集合引用类型的扩展和面向对象编程等。 ES6 学习系列笔记 ES6 总结Symbol、Map、SetES6 中的类&#xff08;class&am…

LeetCode刷题集(三)(26 删除有序数组中的重复项)

学习目标&#xff1a; 基本掌握LeetCode中的26删除有序数组中的重复项 学习内容&#xff1a;LeetCode 26删除有序数组中的重复项 题目描述&#xff1a; 给你一个 升序排列 的数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使每个元素 只出现一次 &#xff0c…

刘二大人《Pytorch深度学习实践》第十一讲卷积神经网络(高级篇)

文章目录 Inception-v1实现Skip Connect实现 Inception-v1实现 Inception-v1中使用了多个11卷积核&#xff0c;其作用&#xff1a; (1)在大小相同的感受野上叠加更多的卷积核&#xff0c;可以让模型学习到更加丰富的特征。传统的卷积层的输入数据只和一种尺寸的卷积核进行运算&…

windows系统本地批量预览svg图标

一、为何需要此操作 目前前端使用图标大致分为两类&#xff1a; iconfont方式&#xff1a;通过引入在线或者下载到本地的iconfont.css类文件实现显示图标第二类是封装图标组件&#xff0c;通过传入指定的svg名称快速生成图标 目前第二种是比较方便的&#xff0c;不需要频…