PySide6.QtMultimedia.QVideoFrame¶
- class QVideoFrame¶
QVideoFrame类表示视频数据的一帧。More_…概要¶
方法¶
def
__init__()def
bytesPerLine()def
endTime()def
handleType()def
height()def
isMapped()def
isReadable()def
isValid()def
isWritable()def
map()def
mapMode()def
mappedBytes()def
mirrored()def
__ne__()def
__eq__()def
paint()def
pixelFormat()def
planeCount()def
rotation()def
rotationAngle()def
setEndTime()def
setMirrored()def
setRotation()def
setStartTime()def
size()def
startTime()def
subtitleText()def
surfaceFormat()def
swap()def
toImage()def
unmap()def
videoBuffer()def
width()
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
一个
QVideoFrame封装了视频帧的像素数据以及关于该帧的信息。视频帧可以来自多个地方 - 解码的
media,camera,或以编程方式生成。这些帧中像素的描述方式可能大不相同,一些像素格式提供了更大的压缩机会,但以易用性为代价。视频帧的像素内容可以使用
map()函数映射到内存中。成功调用map()后,可以通过各种函数访问视频数据。一些YUV像素格式在多个平面中提供数据。planeCount()方法将返回正在使用的平面数量。在映射时,每个平面的视频数据可以使用
bits()函数访问,该函数返回指向缓冲区的指针。此缓冲区的大小由mappedBytes()函数给出,每行的大小由bytesPerLine()给出。handle()函数的返回值也可以用于通过内部缓冲区的本地API(例如 - OpenGL纹理句柄)访问帧数据。视频帧也可以有与之相关的时间戳信息。这些时间戳可以用来确定何时开始和停止显示帧。
QVideoFrame对象可能会消耗大量内存或系统资源,不应在应用程序所需的时间之外长时间持有。注意
由于视频帧的复制可能成本较高,
QVideoFrame是显式共享的,因此对视频帧所做的任何更改也将适用于任何副本。- class HandleType¶
识别视频缓冲区句柄的类型。
常量
描述
QVideoFrame.NoHandle
缓冲区没有句柄,其数据只能通过映射缓冲区来访问。
QVideoFrame.RhiTextureHandle
缓冲区的句柄由Qt渲染硬件接口(RHI)定义。RHI是Qt内部用于3D API的图形抽象,如OpenGL、Vulkan、Metal和Direct 3D。
另请参阅
- class MapMode¶
枚举视频缓冲区的数据如何映射到系统内存。
在版本6.1中添加。
- class RotationAngle¶
请使用
Rotation代替。在显示视频帧之前应应用的顺时针旋转角度。
常量
描述
QVideoFrame.Rotation0
无需旋转,帧具有正确的方向
QVideoFrame.Rotation90
帧应旋转90度
QVideoFrame.Rotation180
帧应旋转180度
QVideoFrame.Rotation270
该帧应旋转270度
在版本6.2.3中添加。
- __init__()¶
构造一个空的视频帧。
- __init__(image)
- Parameters:
图像 –
QImage
从QImage构造一个
QVideoFrame。如果QImage::Format与
PixelFormat中的某个格式匹配,QVideoFrame将持有image的实例并使用该格式,无需进行任何像素格式转换。在这种情况下,只有在调用map时使用WriteOnly标志并保留原始图像时,才会复制像素数据。否则,如果QImage::Format与任何视频格式都不匹配,图像将首先使用QImage::convertedTo()函数和Qt::AutoColor标志转换为支持的(A)RGB格式。这可能会导致性能损失。
如果输入QImage的QImage::isNull()评估为真,
QVideoFrame将无效,且isValid()将返回false。另请参阅
pixelFormatFromImageFormat()isNull()- __init__(other)
- Parameters:
其他 –
QVideoFrame
构造一个
other的浅拷贝。由于QVideoFrame是显式共享的,这两个实例将反映相同的帧。- __init__(format)
- Parameters:
format –
QVideoFrameFormat
构造一个具有给定像素
format的视频帧。- __init__(buffer, format)
- Parameters:
buffer –
QAbstractVideoBufferformat –
QVideoFrameFormat
注意
此函数已弃用。
- bytesPerLine(plane)¶
- Parameters:
plane – int
- Return type:
整数
返回
plane扫描线中的字节数。此值仅在帧数据
mapped时有效。另请参阅
bits()map()mappedBytes()planeCount()- endTime()¶
- Return type:
整数
返回帧应停止显示的时间(以微秒为单位)。
无效时间表示为-1。
另请参阅
- handleType()¶
- Return type:
返回视频帧句柄的类型。
句柄类型可以是
NoHandle,表示帧是基于内存的,或者是RHI纹理。- height()¶
- Return type:
整数
返回视频帧的高度。
- isMapped()¶
- Return type:
布尔
识别视频帧的内容是否当前映射到系统内存。
这是一个便捷函数,用于检查帧的
MapMode是否不等于NotMapped。如果视频帧的内容映射到系统内存,则返回true,否则返回false。
- isReadable()¶
- Return type:
布尔
识别视频帧的映射内容是否在映射时从帧中读取。
这是一个便捷函数,用于检查
MapMode是否包含WriteOnly标志。如果映射内存的内容是从视频帧中读取的,则返回 true,否则返回 false。
- isValid()¶
- Return type:
布尔
识别视频帧是否有效。
无效的帧没有与之关联的视频缓冲区。
如果框架有效则返回true,如果无效则返回false。
- isWritable()¶
- Return type:
布尔
标识当视频帧未映射时,映射的内容是否会被持久化。
这是一个便捷函数,用于检查
MapMode是否包含WriteOnly标志。如果视频帧在未映射时将被更新,则返回 true,否则返回 false。
将视频帧的内容映射到系统(CPU可寻址)内存。
在某些情况下,视频帧数据可能存储在视频内存或其他不可访问的内存中,因此在访问像素数据之前需要映射帧。这可能涉及复制内容,因此除非必要,否则避免映射和取消映射。
地图模式
mode指示映射内存的内容是否应从帧中读取和/或写入帧。如果地图模式包括QVideoFrame::ReadOnly标志,则在最初映射时,映射内存将填充视频帧的内容。如果地图模式包括QVideoFrame::WriteOnly标志,则在取消映射时,可能修改的映射内存的内容将写回帧。在映射视频帧内容时,可以直接通过
bits()函数返回的指针访问。当不再需要访问数据时,请务必调用
unmap()函数以释放映射的内存,并可能更新视频帧内容。如果视频帧以只读模式映射,则允许以只读模式多次映射(并相应次数地取消映射)。在所有其他情况下,必须在第二次映射之前先取消映射帧。
注意
写入映射为只读的内存是未定义的,可能会导致共享数据的更改或崩溃。
如果帧在给定的
mode中被映射到内存,则返回true,否则返回false。返回视频帧映射到系统内存的模式。
- mappedBytes(plane)¶
- Parameters:
plane – int
- Return type:
整数
返回映射帧数据的
plane平面占用的字节数。此值仅在帧数据
mapped时有效。另请参阅
- mirrored()¶
- Return type:
布尔
返回在显示之前是否应该围绕其垂直轴镜像帧。
QVideoFrame的变换,特别是旋转和镜像,仅用于显示视频帧,并且是在表面变换之上应用的,表面变换由QVideoFrameFormat确定。镜像在旋转之后应用。通常需要为来自移动设备前置摄像头的视频帧进行镜像处理。
另请参阅
- __ne__(other)¶
- Parameters:
其他 –
QVideoFrame- Return type:
布尔
如果此
QVideoFrame和other不反映相同的帧,则返回true。- __eq__(other)¶
- Parameters:
其他 –
QVideoFrame- Return type:
布尔
如果此
QVideoFrame和other反映的是同一帧,则返回true。- paint(painter, rect, options)¶
- Parameters:
画家 –
QPainterrect –
QRectFoptions –
PaintOptions
使用一个QPainter,
painter,将此QVideoFrame渲染到rect。PaintOptionsoptions可以用来指定背景颜色以及如何用视频填充rect。注意
使用此方法时,渲染通常不会使用硬件加速。
- pixelFormat()¶
- Return type:
返回此视频帧的像素格式。
- planeCount()¶
- Return type:
整数
返回视频帧中的平面数量。
另请参阅
返回在显示前帧应顺时针旋转的角度。
QVideoFrame的变换,特别是旋转和镜像,仅用于显示视频帧,并且是在表面变换之上应用的,表面变换由QVideoFrameFormat确定。旋转在镜像之前应用。另请参阅
- rotationAngle()¶
- Return type:
注意
此函数已弃用。
请使用
QVideoFrame::rotation代替。返回在显示之前框架应顺时针旋转的角度。
另请参阅
- setEndTime(time)¶
- Parameters:
时间 – int
设置表示
time(以微秒为单位)当一帧应停止显示时。无效时间表示为-1。
另请参阅
- setMirrored(mirrored)¶
- Parameters:
mirrored – 布尔值
设置是否在显示前将帧绕其垂直轴
镜像。QVideoFrame的变换,特别是旋转和镜像,仅用于显示视频帧,并且是在表面变换之上应用的,表面变换由QVideoFrameFormat确定。镜像在旋转之后应用。通常需要为来自移动设备前置摄像头的视频帧进行镜像处理。
默认值为
false。另请参阅
设置
angle,在显示前将帧顺时针旋转。QVideoFrame的变换,特别是旋转和镜像,仅用于显示视频帧,并且是在表面变换之上应用的,表面变换由QVideoFrameFormat确定。旋转在镜像之前应用。默认值为
QtVideo::Rotation::None。另请参阅
- setRotationAngle(angle)¶
- Parameters:
角度 –
RotationAngle
注意
此函数已弃用。
请使用
QVideoFrame::setRotation代替。设置
angle,在显示前将帧顺时针旋转。另请参阅
- setStartTime(time)¶
- Parameters:
时间 – int
设置帧最初应显示时的演示
时间(以微秒为单位)。无效时间表示为-1。
另请参阅
- setStreamFrameRate(rate)¶
- Parameters:
rate – 浮点数
设置视频流的帧率,单位为每秒帧数。
另请参阅
- setSubtitleText(text)¶
- Parameters:
文本 – str
设置应与该视频帧一起呈现的字幕文本为
text。另请参阅
返回视频帧的尺寸。
- startTime()¶
- Return type:
整数
返回帧应该显示的时间(以微秒为单位)。
无效时间表示为-1。
另请参阅
- streamFrameRate()¶
- Return type:
浮点数
返回视频流的帧率,单位为每秒帧数。
另请参阅
- subtitleText()¶
- Return type:
字符串
返回应与该视频帧一起呈现的字幕文本。
另请参阅
- surfaceFormat()¶
- Return type:
返回此视频帧的表面格式。
- swap(other)¶
- Parameters:
其他 –
QVideoFrame
将当前视频帧与
other交换。将当前视频帧转换为图像。
转换基于当前的像素数据和QVideoFrame::surfaceFormat。帧的变换不会影响结果,因为它们仅用于展示。
- unmap()¶
释放由
map()函数映射的内存。如果
MapMode包含了WriteOnly标志,这将把映射内存的当前内容持久化到视频帧中。如果
map()函数失败,则不应调用unmap()。另请参阅
- videoBuffer()¶
- Return type:
注意
此函数已弃用。
- width()¶
- Return type:
整数
返回视频帧的宽度。
- class PaintOptions¶
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
- class PaintFlag¶
- PySide6.QtMultimedia.QVideoFrame.PaintOptions.backgroundColor¶
- PySide6.QtMultimedia.QVideoFrame.PaintOptions.aspectRatioMode¶
- PySide6.QtMultimedia.QVideoFrame.PaintOptions.paintFlags¶