Video QML Type
用于显示指定视频的便捷类型。更多...
| Import Statement: | import QtMultimedia |
| Inherits: |
属性
- autoPlay : bool
(since 6.7) - bufferProgress : real
- duration : int
- endOfStreamPolicy : enumeration
(since 6.9) - error : enumeration
- errorString : string
- fillMode : enumeration
- hasAudio : bool
- hasVideo : bool
- loops : int
- metaData : mediaMetaData
- mirrored : int
- muted : bool
- orientation : int
(since 6.9) - playbackRate : real
- playbackState : enumeration
- position : int
- seekable : bool
- source : url
- volume : real
信号
- errorOccurred(error, errorString)
- paused()
- playing()
- stopped()
方法
- clearOutput()
(since 6.9) - pause()
- play()
- seek(offset)
- stop()
详细说明
Video 是一种便捷类型,将MediaPlayer 和VideoOutput 的功能合二为一。它提供了简单的视频播放功能,而无需声明多种类型。
以下是在场景中实现视频播放的示例代码。
Video {
id: video
width : 800
height : 600
source: "video.avi"
MouseArea {
anchors.fill: parent
onClicked: {
video.play()
}
}
focus: true
Keys.onSpacePressed: video.playbackState == MediaPlayer.PlayingState ? video.pause() : video.play()
Keys.onLeftPressed: video.position = video.position - 5000
Keys.onRightPressed: video.position = video.position + 5000
}源文件video.avi 在您单击MouseArea 的父级时开始播放。视频在 800 × 600 像素的区域内播放,其id 属性值为video。
请注意,由于已为Keys 定义了相关信号,因此按下:
- Spacebar 会切换暂停按钮。
- Left Arrow 将视频的当前位置移回 5 秒前。
- Right Arrow 将视频的当前位置向前推进5秒。
视频支持未变换、拉伸和均匀缩放三种视频呈现方式。有关拉伸和均匀缩放呈现方式的说明,请参阅fillMode 属性的描述。
另请参阅 MediaPlayer 和VideoOutput 。
属性文档
autoPlay : bool [since 6.7]
此属性控制媒体加载完成后是否自动开始播放。默认值为false 。
该属性自 Qt 6.7 起引入。
bufferProgress : real
该属性表示数据缓冲区当前已填充的比例,取值范围为 0.0(空)到 1.0(满)。
duration : int
该属性存储媒体的时长(以毫秒为单位)。
如果媒体没有固定时长(例如直播),该值将为 0。
endOfStreamPolicy : enumeration [since 6.9]
此属性指定视频流结束时应应用的策略。
endOfStreamPolicy 的取值可以是以下之一:
| 常量 | 描述 |
|---|---|
ClearOutput | 视频输出将被清空。 |
KeepLastFrame | 视频输出继续显示最后一帧。请使用clearOutput()方法手动清除输出。 |
默认值为 `VideoOutput.ClearOutput`。
该属性在 Qt 6.9 中引入。
error : enumeration
该属性保存了视频的错误状态。其取值可能为以下之一:
- MediaPlayer.NoError - 当前无错误。
- MediaPlayer.ResourceError - 由于资源分配问题,视频无法播放。
- MediaPlayer.FormatError - 不支持该视频格式。
- MediaPlayer.NetworkError - 因网络问题无法播放视频。
- MediaPlayer.AccessDenied - 因权限不足而无法播放视频。
- MediaPlayer.ServiceMissing - 由于无法实例化媒体服务,视频无法播放。
errorString : string
该属性包含一个字符串,更详细地描述了当前的错误状况。
fillMode : enumeration
设置此属性以定义视频如何缩放以适应目标区域。
- VideoOutput.Stretch - 视频将被拉伸以适应
- VideoOutput.PreserveAspectFit - 视频将均匀缩放以适配目标区域,且不进行裁剪
- VideoOutput.PreserveAspectCrop - 视频均匀缩放以填满区域,必要时进行裁剪
由于此类型仅为方便在 QML 中使用,因此不直接支持枚举,故使用来自VideoOutput 的枚举来访问可用的填充模式。
默认填充模式为 preserveAspectFit。
hasAudio : bool
该属性表示当前媒体是否包含音频内容。
hasVideo : bool
该属性表示当前媒体是否包含视频内容。
loops : int
确定媒体文件播放多少次后停止。设置为MediaPlayer 。设置为Infinite可使当前媒体文件无限循环播放。
默认值为1 。将此属性设置为0 将不产生任何效果。
metaData : mediaMetaData
该属性包含当前媒体的元数据。
有关每个元数据键的详细信息,请参阅MediaPlayer.metaData 。
另请参阅 mediaMetaData 。
mirrored : int
确定显示的视频是否沿其垂直轴进行镜像。镜像效果将在应用orientation 之后生效。默认值为false 。
muted : bool
该属性用于指示音频输出是否被静音。
orientation : int [since 6.9]
该属性确定显示视频在视频坐标系中顺时针旋转的角度(以度为单位),此时显示屏幕上的 Y 轴指向下方。方向变换将在调用 `mirrored` 之前应用。
仅支持90 度的整数倍,即0、90、-90、180、270等,否则将忽略所指定的值。
默认值为0 。
该属性自 Qt 6.9 起引入。
playbackRate : real
该属性将视频的播放速率以正常速率的倍数形式存储。
playbackState : enumeration
此只读属性表示媒体的播放状态。
- MediaPlayer.PlayingState - 媒体正在播放
- MediaPlayer.PausedState - 媒体处于暂停状态
- MediaPlayer.StoppedState - 媒体已停止
默认状态为MediaPlayer.StoppedState。
position : int
该属性存储当前播放位置(以毫秒为单位)。
seekable : bool
该属性控制视频的播放位置是否可以更改。
如果为 true,调用 `seek()` 方法或更改 `position ` 属性将导致播放跳转到新位置。
source : url
该属性存储了媒体的源 URL。
volume : real
该属性用于存储音量值。
音量值在0.0 (静音)到1.0 (最大音量)之间呈线性变化。超出此范围的值将被限制。
默认音量为1.0 。
UI 音量控件通常应采用非线性刻度。例如,使用对数刻度可产生感知响度的线性变化,这正是用户通常对音量控件的预期。更多详情请参阅QtAudio::convertVolume()。
信号文档
errorOccurred(error, errorString)
当发生error 时,会发出此信号。errorString 参数可能包含有关该错误的更多详细信息。
注意: 对应的处理程序 为onErrorOccurred 。
paused()
当播放暂停时,会发出此信号。
注意: 相应的处理程序 为onPaused 。
playing()
当开始或继续播放时,会发出此信号。
注意: 相应的处理程序 为onPlaying 。
stopped()
当播放停止时,会发出此信号。
注意: 相应的处理程序 为onStopped 。
方法文档
[since 6.9] clearOutput()
通过移除当前视频帧来清空视频输出。当视频流结束且endOfStreamPolicy 视频属性设置为KeepLastFrame 时,若需移除最后一个视频帧,建议使用此方法。
该方法在 Qt 6.9 中引入。
pause()
暂停媒体的播放。
play()
开始播放媒体文件。
seek(offset)
如果seekable 属性为 true,则将当前播放位置跳转至offset 。
stop()
停止媒体的播放。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.