PySide6.QtMultimedia.QVideoFrameFormat

class QVideoFrameFormat

QVideoFrameFormat 类指定了视频呈现表面的流格式。更多

在版本6.1中添加。

概要

方法

静态函数

注意

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

详细描述

视频接收器呈现视频帧流。QVideoFrameFormat 描述了帧的类型并决定了它们应如何呈现。

设置视频接收器所需的视频流核心属性是由pixelFormat()给出的像素格式,以及由frameSize()给出的帧尺寸。

视频表面上实际显示的帧的区域由viewport()给出。一个流的视口可能小于帧的整个区域,以允许视频小于视频帧的最接近最佳尺寸。例如,帧的宽度可能会被扩展,以便每个扫描线的开始是八字节对齐的。

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

class PixelFormat

枚举视频数据类型。

常量

描述

QVideoFrameFormat.Format_Invalid

该帧无效。

QVideoFrameFormat.Format_ARGB8888

帧使用ARGB格式存储,每个组件8位。

QVideoFrameFormat.Format_ARGB8888_Premultiplied

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

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的伽马曲线接近,但不完全相同,并且与sRGB中使用的传输曲线相同。

QVideoFrameFormat.ColorTransfer_BT601

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

QVideoFrameFormat.ColorTransfer_Linear

颜色值是线性的

QVideoFrameFormat.ColorTransfer_Gamma22

颜色值以2.2的伽马值编码

QVideoFrameFormat.ColorTransfer_Gamma28

颜色值以2.8的伽马值编码

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进行编码。此传输函数通常也被称为“混合对数伽马”。另请参阅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__()

构建一个空的视频流格式。

__init__(format)
Parameters:

formatQVideoFrameFormat

构造other的副本。

__init__(size, pixelFormat)
Parameters:

使用给定的帧size和像素format构建视频流。

colorRange()
Return type:

ColorRange

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

另请参阅

setColorRange()

colorSpace()
Return type:

ColorSpace

返回视频流的色彩空间。

另请参阅

setColorSpace()

colorTransfer()
Return type:

ColorTransfer

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

另请参阅

setColorTransfer()

fragmentShaderFileName()
Return type:

字符串

frameHeight()
Return type:

整数

返回视频流中帧的高度。

frameRate()
Return type:

浮点数

注意

此函数已弃用。

返回视频流的帧率,单位为每秒帧数。

另请参阅

setFrameRate()

frameSize()
Return type:

QSize

返回视频流中帧的尺寸。

frameWidth()
Return type:

整数

返回视频流中帧的宽度。

另请参阅

frameSize() frameHeight()

static imageFormatFromPixelFormat(format)
Parameters:

格式PixelFormat

Return type:

格式

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

注意

一般来说,QImage 不处理 YUV 格式。

isMirrored()
Return type:

布尔

如果表面围绕其垂直轴对称,则返回 true

QVideoFrameFormat的转换,特别是旋转和镜像,可以通过相机传感器的方向、相机设置或视频流的方向来确定。

镜像在旋转之后应用。

注意

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

isValid()
Return type:

布尔

识别视频表面格式是否具有有效的像素格式和帧大小。

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

maxLuminance()
Return type:

浮点数

__ne__(format)
Parameters:

formatQVideoFrameFormat

Return type:

布尔

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

__eq__(format)
Parameters:

formatQVideoFrameFormat

Return type:

布尔

如果 other 与此视频格式相同,则返回 true,如果不同,则返回 false。

pixelFormat()
Return type:

PixelFormat

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

static pixelFormatFromImageFormat(format)
Parameters:

formatFormat

Return type:

PixelFormat

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

注意

一般来说,QImage 不处理 YUV 格式。

static pixelFormatToString(pixelFormat)
Parameters:

pixelFormatPixelFormat

Return type:

字符串

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

planeCount()
Return type:

整数

返回使用的平面数。这个数字取决于像素格式,对于基于RGB的格式为1,对于基于YUV的格式在1到3之间。

rotation()
Return type:

Rotation

返回表面顺时针旋转的角度。

QVideoFrameFormat的转换,特别是旋转和镜像,可以通过相机传感器的方向、相机设置或视频流的方向来确定。

旋转在镜像之前应用。

另请参阅

setRotation()

scanLineDirection()
Return type:

方向

返回扫描线的方向。

另请参阅

setScanLineDirection()

setColorRange(range)
Parameters:

范围ColorRange

设置应用于渲染视频流的颜色传输范围为range

另请参阅

colorRange()

setColorSpace(colorSpace)
Parameters:

colorSpaceColorSpace

设置视频流的colorSpace

另请参阅

colorSpace()

setColorTransfer(colorTransfer)
Parameters:

colorTransferColorTransfer

设置应用于渲染视频流的颜色传输函数为colorTransfer

另请参阅

colorTransfer()

setFrameRate(rate)
Parameters:

rate – 浮点数

注意

此函数已弃用。

设置视频流的帧率,单位为每秒帧数。

另请参阅

frameRate()

setFrameSize(size)
Parameters:

大小QSize

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

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

另请参阅

frameSize()

setFrameSize(width, height)
Parameters:
  • width – int

  • height – int

这是一个重载函数。

设置视频流中帧的宽度高度

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

setMaxLuminance(lum)
Parameters:

lum – 浮点数

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

setMirrored(mirrored)
Parameters:

mirrored – 布尔值

设置表面是否围绕其垂直轴镜像

QVideoFrameFormat的转换,特别是旋转和镜像,可以通过相机传感器的方向、相机设置或视频流的方向来确定。

镜像在旋转之后应用。

默认值为 false

注意

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

另请参阅

isMirrored()

setRotation(rotation)
Parameters:

rotationRotation

设置表面顺时针旋转的angle

QVideoFrameFormat的转换,特别是旋转和镜像,可以通过相机传感器的方向、相机设置或视频流的方向来确定。

旋转在镜像之前应用。

默认值为 QtVideo::Rotation::None

另请参阅

rotation()

setScanLineDirection(direction)
Parameters:

方向Direction

设置扫描线的方向

另请参阅

scanLineDirection()

setStreamFrameRate(rate)
Parameters:

rate – 浮点数

设置视频流的帧率,单位为每秒帧数。

另请参阅

streamFrameRate()

setViewport(viewport)
Parameters:

视口QRect

将视频流的视口设置为 viewport

另请参阅

viewport()

setYCbCrColorSpace(colorSpace)
Parameters:

colorSpaceYCbCrColorSpace

注意

此函数已弃用。

请使用 setColorSpace() 代替

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

另请参阅

yCbCrColorSpace()

streamFrameRate()
Return type:

浮点数

返回视频流的帧率,单位为每秒帧数。

另请参阅

setStreamFrameRate()

swap(other)
Parameters:

其他QVideoFrameFormat

将当前视频帧格式与other交换。

updateUniformData(dst, frame, transform, opacity)
Parameters:
vertexShaderFileName()
Return type:

字符串

viewport()
Return type:

QRect

返回视频流的视口。

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

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

另请参阅

setViewport()

yCbCrColorSpace()
Return type:

YCbCrColorSpace

注意

此函数已弃用。

请使用 colorSpace() 代替

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

另请参阅

setYCbCrColorSpace()