- class QVideoFrame#
QVideoFrame
类表示视频数据的一个帧。 更多…简介#
方法#
def
__init__()
def
bytesPerLine()
定义
endTime()
定义
handleType()
定义
height()
定义
isMapped()
定义
isReadable()
定义
isValid()
定义
isWritable()
定义
map()
定义
mapMode()
定义
mirrored()
定义
__ne__()
定义
__eq__()
定义
planeCount()
定义
rotation()
定义
setEndTime()
定义
size()
定义
startTime()
定义
swap()
定义
toImage()
定义
unmap()
定义
width()
注意
本文档可能包含自动从 C++ 翻译到 Python 的代码片段。我们始终欢迎对片段翻译做出贡献。如果您发现翻译存在问题,您还可以通过在 https:/bugreports.qt.io/projects/PYSIDE 上创建工单的方式来告知我们。
详细描述#
QVideoFrame
封装了视频帧的像素数据和帧信息。视频帧可以来自多个位置 - 解码的
媒体
、摄像头
,或程序生成。这些帧中描述的像素方式可能各不相同,某些像素格式在方便使用的同时提供了更大的压缩机会。可以使用
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__(other)#
- 参数:
other –
QVideoFrame
构造
other
的浅拷贝。由于QVideoFrame
是显式共享的,这两个实例将反映相同的帧。- __init__()
构造一个空的视频帧。
- __init__(format)
- 参数:
format –
QVideoFrameFormat
构造指定像素格式的视频帧。
- bytesPerLine(plane)#
- 参数:
plane – int
- 返回类型:
int
返回扫描线中字节数。
此值仅在帧数据被
mapped
时有效。另请参阅
bits()
map()
mappedBytes()
planeCount()
- endTime()#
- 返回类型:
int
返回帧应停止显示的时间(以微秒为单位)。
无效时间表示为-1。
另请参阅
- handleType()#
- 返回类型:
返回视频帧句柄的类型。
句柄类型可以是
NoHandle
,表示帧基于内存,或RHI纹理。- height()#
- 返回类型:
int
返回视频帧的高度。
- isMapped()#
- 返回类型:
bool
用于确定视频帧的内容是否当前被映射到系统内存。
这是一个便利函数,它检查帧的
MapMode
属性是否不等于NotMapped
。如果视频帧的内容被映射到系统内存,则返回true,否则返回false。
另请参阅
mapMode()
/MapMode
- isReadable()#
- 返回类型:
bool
用于确定视频帧映射的内容是否在它会话期间已被读取。
这是一个便利函数,用于检查
MapMode
是否包含WriteOnly
标志。如果映射的内存内容是从视频帧中读取的,则返回true,否则返回false。
另请参阅
mapMode()
/MapMode
- isValid()#
- 返回类型:
bool
用于确定视频帧是否有效。
无效的帧没有与之关联的视频缓冲区。
如果帧是有效的,则返回true;如果不是,则返回false。
- isWritable()#
- 返回类型:
bool
用于确定在将帧取消映射时,其内容是否将保持不变。
这是一个便利函数,用于检查
MapMode
是否包含WriteOnly
标志。如果视频帧在取消映射时将被更新,则返回true,否则返回false。
将视频帧的内容映射到系统内存(CPU可寻址内存)。
在某些情况下,视频帧数据可能存储在视频内存或其他无法访问的内存中,因此在使用像素数据之前必须映射帧。这可能导致内容复制,所以除非必要,请避免映射和卸载。
映射模式的
mode
指示是否应从和/or 写入帧中读取映射内存的内容。如果映射模式包括QVideoFrame::ReadOnly
标志,则映射内存将在初使映射时填充视频帧的内容。如果映射模式包括QVideoFrame::WriteOnly
标志,则在解除映射时,可能被修改的映射内存内容将被写回帧中。在映射期间,可以通过
bits()
函数返回的指针直接访问视频帧的内容。当不再需要访问数据时,请务必调用
unmap()
函数以释放映射内存并可能更新视频帧内容。如果视频帧是只读模式映射的,则可以多次在只读模式下映射它(并相应地解除映射)。在其他所有情况下,必须首先解除映射,然后再进行第二次映射。
注意
写入只读映射的内存是未定义的,可能会导致共享数据更改或崩溃。
如果帧以指定的
mode
映射到内存中则返回 true,否则返回 false。返回视频帧映射到系统内存的模式的查询。
- mappedBytes(plane)#
- 参数:
plane – int
- 返回类型:
int
返回映射帧数据中平面
plane
占用的字节数。此值仅在帧数据被
mapped
时有效。另请参阅
- mirrored()#
- 返回类型:
bool
返回帧是否应该在显示前镜像。
另请参阅
- __ne__(other)#
- 参数:
other –
QVideoFrame
- 返回类型:
bool
如果此
QVideoFrame
和other
不反映相同的帧,则返回true
。- __eq__(other)#
- 参数:
other –
QVideoFrame
- 返回类型:
bool
返回
true
如果此QVideoFrame
和other
代表相同的帧。返回此视频帧的像素格式。
- planeCount()#
- 返回类型:
int
返回视频帧中的平面数量。
另请参阅
返回在显示之前帧应该顺时针旋转的角度。
另请参阅
请使用
QVideoFrame::rotation
代替。返回在显示之前帧应该顺时针旋转的角度。
另请参阅
- setEndTime(time)#
- 参数:
时间 – int
设置帧应停止显示的时间表示(以微秒为单位)。
无效时间表示为-1。
另请参阅
- setMirrored(arg__1)#
- 参数:
arg__1 – bool
设置帧的
mirrored
标志。另请参阅
设置在显示之前帧应该顺时针旋转的角度。
另请参阅
- setRotationAngle(angle)#
- 参数:
角度 –
RotationAngle
注意
此函数已弃用。
请使用
QVideoFrame::setRotation
代替。设置在显示之前帧应该顺时针旋转的角度。
另请参阅
- setStartTime(time)#
- 参数:
时间 – int
设置帧最初应显示的时间表示(以微秒为单位)。
无效时间表示为-1。
另请参阅
- setSubtitleText(text)#
- 参数:
text – 字符串
将为与当前视频帧一起渲染的子标题文本设置为
text
。另请参阅
返回视频帧的尺寸。
- startTime()#
- 返回类型:
int
返回帧应该显示时的播放时间(微秒)。
无效时间表示为-1。
另请参阅
- subtitleText()#
- 返回类型:
str
返回将与当前视频帧一起渲染的子标题文本。
另请参阅
- surfaceFormat()#
- 返回类型:
返回此视频帧的表面格式。
- swap(other)#
- 参数:
other –
QVideoFrame
交换当前视频帧与
other
。根据像素格式将当前视频帧转换为图像。
- unmap()#
释放由
map()
函数映射的内存。如果
MapMode
包含了WriteOnly
标志,则这将持久化映射内存中的当前内容到视频帧。如果
map()
函数失败,则不应调用unmap()
。另请参阅
- width()#
- 返回类型:
int
返回视频帧的宽度。