x265 编码参数

介绍

  1. x265是符合 HEVC 编码标准的开源编码器;
  2. 可执行文件下–fullhelp 可查看全部编码参数及其解释:x265 --fullhelp。
  3. git仓库:https://bitbucket.org/multicoreware/x265_git.git
  4. x265_param_default(x265_param* param)函数内全部参数的赋值和使用;

参数详细解析

/* ----Applying default values to all elements in the param structure 将默认值应用于参数结构中的所有元素----*/

  1. cpuid
    x265_param_default() will auto-detect this cpu capability bitmap. it is recommended to not change this value unless you know the cpu detection is somehow flawed on your target hardware. The asm function tables are process global, the first encoder configures them for all encoders.//不推荐改变该值,可实现自动检测 cpu 能力位图

    param->cpuid = X265_NS::cpu_detect(false);

    命令行:cpuid

  2. bEnableWavefront
    Enable wavefront parallel processing, greatly increases parallelism for less than 1% compression efficiency loss. Requires a thread pool, enabled by default.//wpp 技术,提高并行性,压缩效率损失小于 1%,需要线程池,默认开启

    波前并行技术,hevc 的并行处理技术之一;

    param->bEnableWavefront = 1;

    命令行:wpp

  3. frameNumThreads
    Number of concurrently encoded frames between 1 and X265_MAX_FRAME_THREADS or 0 for auto-detection. By default x265 will use a number of frame threads empirically determined to be optimal for your CPU core count, between 2 and 6. Using more than one frame thread causes motion search in the down direction to be clamped but otherwise encode behavior is unaffected. With CQP rate control the output bitstream is deterministic for all values of frameNumThreads greater than 1. All other forms of rate-control can be negatively impacted by increases to the number of frame threads because the extra concurrency adds uncertainty to the bitrate estimations. Frame parallelism is generally limited by the the is generally limited by the the number of CU rows When thread pools are used, each frame thread is assigned to a single pool and the frame thread itself is given the node affinity of its pool. But when no thread pools are used no node affinity is assigned.//在 1 和X265_MAX_FRAME_THREADS之间并行编码的帧数,自动检测时设置为0,一般选择 2-6 比较合适,CQP 时比特流不受帧线程数影响,其他码率控制受到一定的负面影响

    param->frameNumThreads = 0; //默认

    tune:zerolatency模式下param->frameNumThreads = 1;

    命令行:frame-threads

  4. logLevel
    The level of logging detail emitted by the encoder. X265_LOG_NONE to X265_LOG_FULL, default is X265_LOG_INFO//编码器发出的详细日志信息级别,默认 INFO 级别

    param->logLevel = X265_LOG_INFO;//默认

    命令行:log-level/log

  5. csvLogLevel
    Level of csv logging. 0 is summary, 1 is frame level logging, 2 is frame level logging with performance statistics//cvs 日志级别,0 是摘要,1 是帧级别,2 是带有性能统计的帧级别

    param->csvLogLevel = 0;

    命令行:csv-log-level

  6. csvfn
    filename of CSV log. If csvLogLevel is non-zero, the encoder will emit per-slice statistics to this log file in encode order. Otherwise the encoder will emit per-stream statistics into the log file when x265_encoder_log is called (presumably at the end of the encode)//cvs 日志文件名,依靠csvLogLevel的值或x265_encoder_log函数是否被调用

    param->csvfn = NULL;

    命令行 :csv

  7. lambdaFileName
    specify a text file which contains MAX_MAX_QP + 1 floating point values to be copied into x265_lambda_tab and a second set of MAX_MAX_QP + 1 floating point values for x265_lambda2_tab. All values are separated by comma, space or newline. Text after a hash (#) is ignored. The lambda tables are process-global, so these new lambda values will affect all encoders in the same process.//指定文本文件,主要关于lambda的存储,属于码率控制模块的参数

    param->rc.lambdaFileName = NUL;

    命令行:lambda-file

  8. bLogCuStats(已弃用
    Enable analysis and logging distribution of CUs. Now deprecated.//CU 的分析和日志分发,已经弃用

    param->bLogCuStats = 0;

    命令行:cu-stats

  9. decodedPictureHashSEI
    Enable the generation of SEI messages for each encoded frame containing the hashes of the three reconstructed picture planes. Most decoders will validate those hashes against the reconstructed images it generates and report any mismatches. This is essentially a debugging feature. Hash types are MD5(1), CRC(2), Checksum(3). Default is 0, none//产生包含哈希的SEI 信息,解码器会根据这些哈希验证重建图并报告错误,本质是 debug 特点,哈希类型有: MD5(1)、CRC(2)、Chechsum(3),默认是0,不产生哈希SEI

    param->decodedPictureHashSEI = 0;

    命令行:hash



/* ------------------Quality Measurement Metrics 质量评价度量------------------------*/

  1. bEnablePsnr
    Enable the measurement and reporting of PSNR. Default is enabled //计算并打印 PSNR,默认是关闭(代码备注写打开,写错了)

    param->bEnablePsnr = 0;

    命令行:psnr

  2. bEnableSsim
    Enable the measurement and reporting of SSIM. Default is disabled //计算并打印 SSIM,默认关闭

    param->bEnableSsim = 0;

    命令行:ssim



/* ------------Source specifications 源规范--------------------------*/

  1. internalBitDepth
    Internal encoder bit depth. If x265 was compiled to use 8bit pixels (HIGH_BIT_DEPTH=0), this field must be 8, else this field must be 10. Future builds may support 12bit pixels. //内部编码器位深度,如果 x265 被编译使用 8bit,该字段必须为 8,否则为 10,未来会支持 12bit 像素

    param->internalBitDepth = X265_DEPTH;

    命令行:bitdepth

  2. sourceBitDepth
    Input sequence bit depth. It can be either 8bit, 10bit or 12bit.//输入序列位深度,可以是 8bit、10bit、12bit

    param->sourceBitDepth = 8;

  3. internalCsp
    Color space of internal pictures, must match color space of input pictures. //内部图像的颜色空间,必须匹配输入图像的颜色空间

    param->internalCsp = X265_CSP_I420;

    命令行:input-csp

  4. levelIdc(水平 level)
    Minimum decoder requirement level. Defaults to 0, which implies auto-detection by the encoder. If specified, the encoder will attempt to bring the encode specifications within that specified level. If the encoder is unable to reach the level it issues a warning and emits the actual decoder requirement. If the requested requirement level is higher than the actual level, the actual requirement level is signaled. The value is an specified as an integer with the level times 10, for example level “5.1” is specified as 51, and level “5.0” is specified as 50.//最小解码器要求级别,默认 0,表示由编码器自动检测;该值以整数形式指定

    水平(Level) 指出了一些对解码端负载和内存占用影响较大的关键参数的约束,这些参数主要包括有:采样频率、分辨率、码率的最大值,压缩率的最小值、解码图形缓冲区(DPB)的容量、编码图像缓冲区(CPB)的容量;水平中还约束了每帧中垂直和水平方向的tile的最大数量,以及每秒最大的tile数量。

    HEVC共有13个水平:1, 2, 2.1, 3,3.1, 4, 4.1, 5, 5.1, 5.2, 6,6.1, 6.2。

    param->levelIdc = 0; //Auto-detect level

    命令行:level-idc
    在这里插入图片描述

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

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

相关文章

爬虫源码---爬取小猫猫交易网站

前言: 本片文章主要对爬虫爬取网页数据来进行一个简单的解答,对与其中的数据来进行一个爬取。 一:环境配置 Python版本:3.7.3 IDE:PyCharm 所需库:requests ,parsel 二:网站页面 我们需要…

索引简单概述(SQL)

一、什么是索引? 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),他们包含着对数据表里所有记录的引用指针。 索引是一种数据结构。数据库索引,是数据库管理系统中一个排序的数据结构&#xff0…

说说Lambda架构

分析&回答 Lambda架构是由Storm的作者Nathan Marz提出的一个实时大数据处理框架。Marz在Twitter工作期间开发了著名的实时大数据处理框架Storm,Lambda架构是其根据多年进行分布式大数据系统的经验总结提炼而成。Lambda架构的目标是设计出一个能满足实时大数据系…

安卓Termux搭建web服务器【公网远程手机Android服务器】

文章目录 概述1.搭建apache2.安装cpolar内网穿透3.公网访问配置4.固定公网地址5.添加站点 概述 Termux是一个Android终端仿真应用程序,用于在 Android 手机上搭建一个完整的Linux 环境,能够实现Linux下的许多基本操作,不需要root权限Termux就…

Windows下搭建MavLink通信协议环境,并用C++程序测试

搭建环境 git克隆 git clone https://github.com/mavlink/mavlink.git --recursive安装python的future库 pip install future使用可视化工具生成mavlink库 XML是选择消息格式,也可以自定义Out是输出路径Language是生成的语言,我这里是CProtocol是协议…

mac 安装 homebrew

摘要: 本文主要是下载安装包安装homebrew,然后配置环境变量Path。检验是否安装成功。 homebrew地址:macOS(或 Linux)缺失的软件包的管理器 — Homebrew 在终端命令下载安装: /bin/bash -c "$(curl…

OpenCV(十六):高斯图像金字塔

目录 1.高斯图像金字塔原理 2.高斯图像金字塔实现 1.高斯图像金字塔原理 高斯图像金字塔是一种用于多尺度图像表示和处理的重要技术。它通过对图像进行多次高斯模糊和下采样操作来生成不同分辨率的图像层级,每个层级都是原始图像的模糊和降采样版本。 以下是高斯…

FPGA可重配置原理及实现(1)——导论

一、概述 可重配置技术是Xilinx提供的用来高效利用FPGA设计资源实现FPGA资源可重复利用的最新的FPGA设计技术,这种技术的发展为FPGA应用提供了更加广阔的前景。 术语“重构”是指FPGA已经配置后的重新编程。FPGA的重构有两种类型:完全的和部分的。完全重…

C# 获取Windows系统版本注意事项

首先通过微软官方文档:https://learn.microsoft.com/zh-cn/windows/win32/sysinfo/operating-system-version了解各个操作系统对应的版本号 下面介绍3种获取版本号的方式及弊端 1. Environment.OSVersion.Version OperatingSystem os Environment.OSVersion;// 判断…

【动态规划】面试题 08.01. 三步问题

Halo,这里是Ppeua。平时主要更新C,数据结构算法,Linux与ROS…感兴趣就关注我bua! 文章目录 0. 题目解析1. 算法原理1.1 状态表示1.2 状态转移方程1.3初始化1.4 填表顺序1.5 返回值 2.算法代码 🐧 本篇是整个动态规划的…

【webpack】HMR热更新原理

本文:参考文章 一、HMR是什么,为什么出现 1、出现的原因 之前,应用的加载、更新都是一个页面级别的操作,即使单个代码文件更新,整个页面都要刷新,才能拿到最新的代码同步到浏览器,导致会丢失…

软件行业25年技术发展史

语言时代 -> 框架时代 -> 分布式架构时代 -> 微服务架构时代 25年开发、管理,11年教培(教研总监)技术总结: 1997年 VB 1999年 ASPCOM 2004年 C# / JAVA、j2ee、ejb、struts1hibernate 2008年 旧三大框架 Struts2Spr…

【校招VIP】前端算法考点之大数据相关

考点介绍: 大数据的关键技术分为分析技术和处理技术,可用于大数据分析的关键技术主要包括A/B测试,关联规则挖掘,数据挖掘,集成学习,遗传算法,机器学习,自然语言处理,模式…

Bevformer:通过时空变换从多摄像机图像学习鸟瞰图表示

论文地址:BEVFormer: Learning Bird’s-Eye-View Representation from Multi-Camera Images via Spatiotemporal Transformers 代码地址:https://github.com/zhiqi-li/BEVFormer 论文背景 三维视觉感知任务,包括基于多摄像机图像的三维检测…

深度解析BERT:从理论到Pytorch实战

本文从BERT的基本概念和架构开始,详细讲解了其预训练和微调机制,并通过Python和PyTorch代码示例展示了如何在实际应用中使用这一模型。我们探讨了BERT的核心特点,包括其强大的注意力机制和与其他Transformer架构的差异。 关注TechLead&#x…

未来智造:珠三角引领人工智能产业集群

原创 | 文 BFT机器人 产业集群是指产业或产业群体在地理位置上集聚的现象,产业集群的研究对拉动区域经济发展,提高区域产业竞争力具有重要意义。 从我国人工智能产业集群形成及区域布局来看,我国人工智能产业发展主要集聚在京津冀、长三角、…

echarts图表静态数据 象形柱形图、折线图、日历饼图、饼状图四种实现

标题 页面全部代码 <template><div class"data-serve"><div class"side"><div class"side-inner"><router-link class"side-btn" to"/camer/pushInfo"><i class"el-icon-picture&q…

51单片机(普中HC6800-EM3 V3.0)实验例程软件分析 电位器AD实验

一、直接上代码 /************************************************************************************** * 电位器AD实验 * 实现现象&#xff1a;下载程序后数码管后4位显示电位器检测的AD值&#xff0c;范围是0-4095&#xff0c;一般达不到最…

使用wkhtmltoimage实现生成长图分享

需求 用户可以选择以长图的形式分享本网页 方法 wkhtmltopdf wkhtmltopdf url filewkhtmltoimage url file java Runtime.getRuntime().exec() 下载 直接去官网下载对应的版本&#xff1a;官网 命令行使用WK > wkhtmltopdf https://www.nowcoder.com /opt/project/…

ExpressLRS开源代码之工程结构

ExpressLRS开源代码之工程结构 1. 源由2. 工程3. 开发环境安装4. pio命令5. ExpressLRS配置6. 硬件认证过程7. 参考资料 1. 源由 ExpressLRS开源代码基于Arduino框架设计&#xff0c;在所支持的硬件环境下&#xff0c;提供900/2400发射机和接收机硬件方案。 该设计提供了一个…