class QVideoFrameFormat#

QVideoFrameFormat 类指定视频展示流的格式。 更多...

新版本 6.1中引入。

摘要#

方法#

静态函数#

注意

此文档可能包含从 C++ 自动翻译到 Python 的代码段。我们始终欢迎对代码段翻译的贡献。如果您发现翻译存在任何问题,您也可以通过在 https:/bugreports.qt.io/projects/PYSIDE 上创建工单来告知我们。

详细描述#

视频输出显示一系列视频帧。《QVideoFrameFormat` 描述帧的类型,并确定它们应该如何显示。

要设置视频输出所需的核心视频流属性包括由 pixelFormat() 提供的像素格式,以及由 frameSize() 提供的帧尺寸。

视频纹理上实际显示的帧区域由 viewport() 确定一个视频流的视口可能小于整个帧区域,以适应小于视频帧最近优化大小的视频。例如,帧的宽度可能被扩展,以便每条扫描线的开始处是8字节对齐。

其他常见属性包括 scanLineDirection()frameRate() 和 yCrCbColorSpace()。

class PixelFormat#

枚举视频数据类型。

常量

描述

QVideoFrameFormat.Format_Invalid

帧无效。

QVideoFrameFormat.Format_ARGB8888

帧使用每个组件8位的ARGB格式进行存储。

QVideoFrameFormat.Format_ARGB8888_Premultiplied

帧使用每个组件8位的预乘ARGB格式进行存储。

QVideoFrameFormat.Format_XRGB8888

帧使用每个像素32位RGB格式(0xff, R, G, B)进行存储。

QVideoFrameFormat.Format_BGRA8888

帧使用32位BGRA格式(0xBBGGRRAA)进行存储。

QVideoFrameFormat.Format_BGRA8888_Premultiplied

帧使用预乘32位BGRA格式进行存储。

QVideoFrameFormat.Format_ABGR8888

帧使用32位ABGR格式(0xAABBGGRR)进行存储。

QVideoFrameFormat.Format_XBGR8888

帧使用32位BGR格式(0xffBBGGRR)进行存储。

QVideoFrameFormat.Format_RGBA8888

帧以字节的顺序R、G、B、A/X在内存中存储,其中R在最低地址,A/X在最高地址。

QVideoFrameFormat.Format_BGRX8888

帧以32位BGRx格式存储,[31:0] B:G:R:x 8:8:8:8 小端模式

QVideoFrameFormat.Format_RGBX8888

帧以字节的顺序R、G、B、A/X在内存中存储,其中R在最低地址,A/X在最高地址。

QVideoFrameFormat.Format_AYUV

帧使用打包的32位AYUV格式(0xAAYYUUVV)进行存储。

QVideoFrameFormat.Format_AYUV_Premultiplied

帧使用打包的预乘32位AYUV格式(0xAAYYUUVV)进行存储。

QVideoFrameFormat.Format_YUV420P

帧使用每分量8位的平面YUV格式进行存储,U和V面水平垂直子采样,即U和V面的高度和宽度是Y面的一半。

QVideoFrameFormat.Format_YUV422P

帧使用每分量8位的平面YUV格式进行存储,U和V面水平子采样,即U和V面的宽度是Y面的一半,U和V面的高度与Y面相同。

QVideoFrameFormat.Format_YV12

帧使用每分量8位的平面YVU格式进行存储,V和U面水平垂直子采样,即V和U面的高度和宽度是Y面的一半。

QVideoFrameFormat.Format_UYVY

帧使用每分量8位的打包YUV格式进行存储,U和V面水平子采样(U-Y-V-Y),即两个水平相邻的像素被存储为一个32位宏像素,该像素具有每个像素的Y值和共同的U和V值。

QVideoFrameFormat.Format_YUYV

帧使用每分量8位的打包YUV格式进行存储,U和V面水平子采样(Y-U-Y-V),即两个水平相邻的像素被存储为一个32位宏像素,该像素具有每个像素的Y值和共同的U和V值。

QVideoFrameFormat.Format_NV12

帧数据使用每个分量8位的半平面YUV格式存储,Y面(Y)后跟水平和垂直子采样并打包的UV平面(U-V)。

QVideoFrameFormat.Format_NV21

帧数据使用每个分量8位的半平面YUV格式存储,Y面(Y)后跟水平和垂直子采样并打包的VU平面(V-U)。

QVideoFrameFormat.Format_IMC1

帧数据使用每个分量8位的平面YUV格式存储,U和V面水平垂直子采样。这类似于Format_YUV420P类型,不同之处在于U和V面的每行字节填充到与Y面相同的步长。

QVideoFrameFormat.Format_IMC2

帧数据使用每个分量8位的平面YUV格式存储,U和V面水平垂直子采样。这类似于Format_YUV420P类型,不同之处在于U和V面的行是交错排列的,即每个U数据行后面跟着一个V数据行,形成一个与Y数据行相同的步长的单行。

QVideoFrameFormat.Format_IMC3

帧数据使用每个分量8位的平面YVU格式存储,V和U面水平垂直子采样。这类似于Format_YV12类型,不同之处在于V和U面的每行字节填充到与Y面相同的步长。

QVideoFrameFormat.Format_IMC4

帧数据使用每个分量8位的平面YVU格式存储,V和U面水平垂直子采样。这类似于Format_YV12类型,不同之处在于V和U面的行是交错排列的,即每个V数据行后面跟着一个U数据行,形成一个与Y数据行相同的步长的单行。

QVideoFrameFormat.Format_P010

帧数据使用每个分量16位的半平面YUV格式存储,Y面(Y)后跟水平和垂直子采样并打包的UV平面(U-V)。每个分量的最高10位被使用。

QVideoFrameFormat.Format_P016

帧数据使用每个分量16位的半平面YUV格式存储,Y面(Y)后跟水平和垂直子采样并打包的UV平面(U-V)。

QVideoFrameFormat.Format_Y8

帧数据使用8位灰度格式存储。

QVideoFrameFormat.Format_Y16

帧数据使用16位线性灰度格式存储。小端格式。

QVideoFrameFormat.Format_Jpeg

帧数据以压缩的JPEG格式存储。

QVideoFrameFormat.Format_SamplerExternalOES

帧数据以外部OES纹理格式存储。目前仅在Android上使用。

QVideoFrameFormat.Format_SamplerRect

帧数据以矩形纹理格式存储(GL_TEXTURE_RECTANGLE)。仅在macOS上使用,通过基于OpenGL的渲染硬件接口。纹理中存储的基础像素格式为Format_BRGA8888。

QVideoFrameFormat.Format_YUV420P10

类似于YUV420,但每个分量使用16位,其中10位为有效位。

class Direction#

枚举视频扫描行布局方向。

常量

描述

QVideoFrameFormat.TopToBottom

扫描行从框架顶部到底部排列。

QVideoFrameFormat.BottomToTop

扫描行从框架底部到顶部排列。

class YCbCrColorSpace#

使用ColorSpace代替。

枚举视频帧的Y'CbCr色彩空间。

常量

描述

QVideoFrameFormat.YCbCr_Undefined

没有指定色彩空间。

QVideoFrameFormat.YCbCr_BT601

ITU-R建议标准BT.601定义的Y'CbCr色彩空间,Y值范围为16到235,Cb/Cr范围为16到240。主要用于针对CRT显示屏的旧视频。

QVideoFrameFormat.YCbCr_BT709

ITU-R BT.709定义的Y'CbCr色彩空间,与YCbCr_BT601具有相同的值范围。目前最常用的色彩空间。

QVideoFrameFormat.YCbCr_xvYCC601

此值已弃用。请检查ColorRange。这是BT.601色彩空间,其值范围扩展到0到255。与BT.601向后兼容,并使用BT.601范围之外的值来表示更宽的色彩范围。

QVideoFrameFormat.YCbCr_xvYCC709

此值已弃用。请检查ColorRange。这是BT.709色彩空间,其值范围扩展到0到255。

QVideoFrameFormat.YCbCr_JPEG

在大多数JPEG文件中使用满范围的Y'CbCr色彩空间。

QVideoFrameFormat.YCbCr_BT2020

ITU-R BT.2020定义的色彩空间。主要用于HDR视频。

class ColorSpace#

列出视频帧的色彩空间。

常量

描述

QVideoFrameFormat.ColorSpace_Undefined

没有指定色彩空间。

QVideoFrameFormat.ColorSpace_BT601

ITU-R推荐标准BT.601定义的色彩空间,Y值范围为16到235,Cb/Cr范围为16到240。主要用于针对CRT显示屏的旧视频。

QVideoFrameFormat.ColorSpace_BT709

ITU-R BT.709定义的色彩空间,与ColorSpace_BT601具有相同的值范围。目前最常用的色彩空间。

QVideoFrameFormat.ColorSpace_AdobeRgb

在最常用的JPEG文件中使用满范围的YUV色彩空间。

QVideoFrameFormat.ColorSpace_BT2020

ITU-R BT.2020定义的色彩空间。主要用于HDR视频。

自6.4版开始增加。

class ColorTransfer#

常量

描述

QVideoFrameFormat.ColorTransfer_Unknown

色彩转换函数未知。

QVideoFrameFormat.ColorTransfer_BT709

色彩值按照BT709进行编码。另请参阅https://www.itu.int-rec/R-REC-BT.709/en。这接近但不完全等同于2.2的gamma曲线,并且具有与sRGB相同的传输曲线。

QVideoFrameFormat.ColorTransfer_BT601

色彩值按照BT601进行编码。另请参阅https://www.itu.int-rec/R-REC-BT.601/en

QVideoFrameFormat.ColorTransfer_Linear

色彩值是线性的。

QVideoFrameFormat.ColorTransfer_Gamma22

色彩值使用2.2的gamma进行编码。

QVideoFrameFormat.ColorTransfer_Gamma28

色彩值使用2.8的gamma进行编码。

QVideoFrameFormat.ColorTransfer_ST2084

色彩值使用STME ST 2084进行编码。这是最常见的HDR传输函数,通常被称为“感知量化器”。另请参阅https://www.itu.int-rec/R-REC-BT.2100https://en.wikipedia.org/wiki/Perceptual_quantizer

QVideoFrameFormat.ColorTransfer_STD_B67

色彩值使用ARIB STD B67进行编码。此传输函数也常被称为“混合对数gamma”。另请参阅https://www.itu.int-rec/R-REC-BT.2100https://en.wikipedia.org/wiki/Hybrid_log-gamma。

自6.4版开始增加。

class ColorRange#

描述了视频数据所使用的颜色范围。视频数据通常是全色域,其中所有值都被使用,或者是传统上在 YUV 视频格式中使用的更有限的范围,其中只有一部分值被使用。

常量

描述

QVideoFrameFormat.ColorRange_Unknown

视频的颜色范围未知。

QVideoFrameFormat.ColorRange_Video

大多数 YUV 视频格式传统上使用的颜色范围。对于 8 位格式,Y 组件限制在 16 到 235 之间。U 和 V 组件限制在 16 到 240 之间

对于较深的位深,将这两个值乘以 2^(深度-8)。

常量

描述

QVideoFrameFormat.ColorRange_Full

全色域。所有 0 到 2^深度 - 1 之间的值都是有效的。

自6.4版开始增加。

PySide6.QtMultimedia.QVideoFrameFormat.NPixelFormats#
__init__(size, pixelFormat)#
参数:

使用给定的帧大小和像素格式构建视频流。

__init__()

构建一个空视频流格式。

__init__(format)
参数:

formatQVideoFrameFormat

构建 other 的副本。

colorRange()#
返回类型:

ColorRange

返回应用于渲染视频流的颜色范围。

另请参阅

setColorRange()

colorSpace()#
返回类型:

ColorSpace

返回视频流的颜色空间。

另请参阅

setColorSpace()

colorTransfer()#
返回类型:

ColorTransfer

返回应用于渲染视频流的颜色转换函数。

另请参阅

setColorTransfer()

fragmentShaderFileName()#
返回类型:

str

frameHeight()#
返回类型:

int

返回视频流中帧的高度。

frameRate()#
返回类型:

float

以每秒帧数的形式返回视频流的帧率。

另请参阅

setFrameRate()

frameSize()#
返回类型:

QSize

返回视频流中帧的尺寸。

frameWidth()#
返回类型:

int

返回视频流中帧的宽度。

另请参阅

frameSize() frameHeight()

static imageFormatFromPixelFormat(format)#
参数:

formatPixelFormat

返回类型:

格式

返回与视频帧像素格式等效的图像格式。如果没有等效格式,则返回QImage::Format_Invalid。

注意

一般情况下,QImage不处理YUV格式。

isMirrored()#
返回类型:

bool

如果表面在垂直轴周围镜像,则返回true。这通常是来自移动设备前摄像头的视频帧所需要的。

注意

这里的镜像与QImage::mirrored不同,因为垂直镜像的QImage将在其x轴周围镜像。

isValid()#
返回类型:

bool

确定视频表面格式是否有有效的像素格式和帧大小。

如果格式有效则返回true,否则返回false。

maxLuminance()#
返回类型:

float

__ne__(format)#
参数:

formatQVideoFrameFormat

返回类型:

bool

如果other与这个视频格式不同,则返回true,如果它们相同,则返回false。

__eq__(format)#
参数:

formatQVideoFrameFormat

返回类型:

bool

如果other与这个视频格式相同,则返回true,如果它们不同,则返回false。

pixelFormat()#
返回类型:

PixelFormat

返回视频流中帧的像素格式。

static pixelFormatFromImageFormat(format)#
参数:

format格式

返回类型:

PixelFormat

返回与图像format相当的媒体像素格式。如果没有有效格式,则返回Format_Invalid

注意

一般情况下,QImage不处理YUV格式。

static pixelFormatToString(pixelFormat)#
参数:

pixelFormatPixelFormat

返回类型:

str

返回给定pixelFormat的字符串表示形式。

planeCount()#
返回类型:

int

返回所使用平面的数量。这个数字取决于像素格式,对于基于RGB的格式来说是1,对于基于YUV的格式则是在1到3之间的一个数字。

scanLineDirection()#
返回类型:

方向

返回扫描线的方向。

另请参阅

setScanLineDirection()

setColorRange(range)#
参数:

rangeColorRange

将用于渲染视频流的颜色转换范围设置为range

另请参阅

colorRange()

setColorSpace(colorSpace)#
参数:

colorSpaceColorSpace

将视频流的颜色空间设置为colorSpace

另请参阅

colorSpace()

setColorTransfer(colorTransfer)#
参数:

colorTransferColorTransfer

将用于渲染视频流的颜色转换函数设置为colorTransfer

另请参阅

colorTransfer()

setFrameRate(rate)#
参数:

rate – float

设置视频流的帧率(每秒帧数)。

另请参阅

frameRate()

setFrameSize(size)#
参数:

sizeQSize

设置视频流中帧的大小为 size

这将重置 viewport() 以填充整个帧。

另请参阅

frameSize()

setFrameSize(width, height)
参数:
  • width – int

  • height – int

这是一个重载函数。

设置视频流中帧的 widthheight

这将重置 viewport() 以填充整个帧。

setMaxLuminance(lum)#
参数:

lum – float

将最大亮度设置为给定的值,lum

setMirrored(mirrored)#
参数:

mirrored – bool

设置表面是否在垂直轴上 mirrored。这对于来自移动设备前摄像头的视频帧通常需要。默认值是 false。

注意

这里的镜像与QImage::mirrored不同,因为垂直镜像的QImage将在其x轴周围镜像。

另请参阅

isMirrored()

setScanLineDirection(direction)#
参数:

directionDirection

设置扫描线的 direction

另请参阅

scanLineDirection()

setViewport(viewport)#
参数:

viewportQRect

将视频流的视口设置为 viewport

另请参阅

viewport()

setYCbCrColorSpace(colorSpace)#
参数:

colorSpaceYCbCrColorSpace

注意

此函数已弃用。

请使用 setColorSpace() 代替

设置视频流的 Y’CbCr 颜色 空间。它仅用于原始 YUV 帧类型。

另请参阅

yCbCrColorSpace()

swap(other)#
参数:

otherQVideoFrameFormat

交换当前的视频帧格式与 other

updateUniformData(dst, frame, transform, opacity)#
参数:
vertexShaderFileName()#
返回类型:

str

viewport()#
返回类型:

QRect

返回视频流的视口。

视口是视频帧实际显示的区域。

默认情况下,视口覆盖整个帧。

另请参阅

setViewport()

yCbCrColorSpace()#
返回类型:

YCbCrColorSpace

注意

此函数已弃用。

请使用 colorSpace() 代替

返回视频流的 Y’CbCr 颜色空间。

另请参阅

setYCbCrColorSpace()