MediaPlayer QML Type
向场景中添加媒体播放功能。更多...
| Import Statement: | import QtMultimedia |
| In C++: | QMediaPlayer |
属性
- activeAudioTrack : int
- activeSubtitleTrack : int
- activeVideoTrack : int
- audioBufferOutput : QAudioBufferOutput
(since 6.8) - audioOutput : AudioOutput
- audioTracks : list<mediaMetaData>
- autoPlay : bool
(since 6.7) - bufferProgress : real
- duration : int
- error : enumeration
- errorString : string
- hasAudio : bool
- hasVideo : bool
- loops : int
- mediaStatus : enumeration
- metaData : mediaMetaData
- pitchCompensation : bool
(since 6.10) - pitchCompensationAvailability : enumeration
(since 6.10) - playbackOptions : PlaybackOptions
(since 6.10) - playbackRate : real
- playbackState : enumeration
- playing : bool
(since 6.5) - position : int
- seekable : bool
- source : url
- subtitleTracks : list<mediaMetaData>
- videoOutput : VideoOutput
- videoTracks : list<mediaMetaData>
信号
- errorOccurred(error, errorString)
- playbackStateChanged()
- playingChanged()
- tracksChanged()
方法
详细说明
Text {
text: "Click Me!";
font.pointSize: 24;
width: 150; height: 50;
MediaPlayer {
id: playMusic
source: "music.wav"
audioOutput: AudioOutput {}
}
MouseArea {
anchors.fill: parent
onPressed: { playMusic.play() }
}
}您可以将 MediaPlayer 与 MultiMedia::AudioOutput 配合使用来播放音频内容,也可以将其与 Multimedia::VideoOutput 配合使用来渲染视频。
Item {
MediaPlayer {
id: mediaplayer
source: "groovy_video.mp4"
audioOutput: AudioOutput {}
videoOutput: videoOutput
}
VideoOutput {
id: videoOutput
anchors.fill: parent
}
MouseArea {
anchors.fill: parent
onPressed: mediaplayer.play();
}
}另请参阅 AudioOutput 和VideoOutput 。
属性文档
activeAudioTrack : int
该属性存储当前活动音频轨道的轨道编号。将其设置为-1 可禁用该音频轨道。
该属性的默认值为0 :即第一条音频轨道。
activeSubtitleTrack : int
此属性存储当前活动的字幕轨道编号。将其设置为-1 可禁用该字幕轨道。
该属性的默认值为-1 :无字幕启用。
activeVideoTrack : int
该属性存储当前活动视频音频轨道的轨道编号。将其设置为-1 可禁用视频轨道。
该属性的默认值为0 :即第一个视频音轨。
audioBufferOutput : QAudioBufferOutput [since 6.8]
该属性存储目标音频缓冲区输出。
在 QML 中正常使用 `MediaPlayer ` 时,通常无需使用此属性。
该属性在 Qt 6.8 中引入。
另请参阅 QMediaPlayer::audioBufferOutput()。
audioOutput : AudioOutput
该属性用于存储目标音频输出。接受一个AudioOutput 元素。
另请参阅 QMediaPlayer::setAudioOutput()。
audioTracks : list<mediaMetaData> [read-only]
该属性包含一个元数据列表。每个索引对应一条音频轨道。
元数据包含描述各音轨的属性。对于音轨而言,Language 通常是最重要的属性。
当该属性发生更改时,会触发tracksChanged 信号。
另请参阅 mediaMetaData 。
autoPlay : bool [since 6.7]
此属性控制媒体加载完成后是否自动开始播放。默认值为false 。
该属性自 Qt 6.7 起引入。
bufferProgress : real [read-only]
该属性表示数据缓冲区当前的填充程度,范围从0.0 (空)到1.0 (已满)。
只有当缓冲区完全填满时,才能开始或恢复播放。当缓冲区填满时,MediaPlayer.Buffered 为 true。当缓冲区进度介于0.0 和1.0 之间时,MediaPlayer.Buffering 将被设置为true 。
若值小于1.0 ,则表示属性MediaPlayer.StalledMedia 为true 。
另请参阅 mediaStatus 。
duration : int [read-only]
该属性存储媒体的时长(以毫秒为单位)。
如果媒体没有固定时长(例如直播),则该属性将设置为0 。
error : enumeration [read-only]
该属性存储音频的错误状态。其取值可以是以下几种之一。
| 常量 | 描述 |
|---|---|
MediaPlayer.NoError | 未发生错误。 |
MediaPlayer.ResourceError | 无法解析媒体资源。 |
MediaPlayer.FormatError | 媒体资源的格式未被(完全)支持。可能仍可播放,但会缺少音频或视频组件。 |
MediaPlayer.NetworkError | 发生网络错误。 |
MediaPlayer.AccessDeniedError | 没有播放该媒体资源所需的权限。 |
errorString : string [read-only]
该属性包含一个字符串,用于更详细地描述当前的错误状况。
hasAudio : bool [read-only]
该属性表示媒体是否包含音频。
hasVideo : bool [read-only]
该属性表示媒体是否包含视频。
loops : int
确定媒体文件在播放器停止前被播放的次数。设置为 MediaPlayer::Infinite 可使当前媒体文件无限循环播放。
默认值为1 。将此属性设置为0 不会产生任何效果。
mediaStatus : enumeration [read-only]
该属性表示媒体加载状态。其取值可以是以下之一:
| 常量 | 描述 |
|---|---|
MediaPlayer.NoMedia | 当前没有媒体。播放器处于“已停止”状态。 |
MediaPlayer.LoadingMedia | 当前媒体正在加载中。播放器可能处于任何状态。 |
MediaPlayer.LoadedMedia | 当前媒体已加载完毕。播放器处于“已停止状态”(StoppedState)。 |
MediaPlayer.StalledMedia | 由于缓冲区数据不足或其他临时中断,当前媒体的播放已暂停。播放器处于“播放中”状态或“暂停”状态。 |
MediaPlayer.BufferingMedia | 播放器正在缓冲数据,但已缓冲的数据足以支持近期内继续播放。播放器处于“播放状态”或“暂停状态”。 |
MediaPlayer.BufferedMedia | 播放器已将当前媒体缓冲完毕。播放器处于“播放状态”或“暂停状态”。 |
MediaPlayer.EndOfMedia | 播放已到达当前媒体的结尾。播放器处于“已停止”状态。 |
MediaPlayer.InvalidMedia | 无法播放当前媒体。播放器处于“StoppedState”状态。 |
metaData : mediaMetaData [read-only]
返回媒体播放器当前所用媒体的元数据。
元数据可能包含视频标题或创建日期等信息。
注意: Windows版本 仅为位于本地文件系统上的媒体提供元数据。
pitchCompensation : bool [since 6.10]
该属性用于控制是否启用音高补偿。
该属性自 Qt 6.10 起引入。
pitchCompensationAvailability : enumeration [read-only, since 6.10]
指示当前后端是否支持MediaPlayer 的音高补偿功能。枚举PitchCompensationAvailability 具有作用域限制。
| 常量 | 描述 |
|---|---|
MediaPlayer.AlwaysOn | 媒体播放器始终执行音高补偿。 |
MediaPlayer.Available | 媒体播放器可配置为使用音高补偿。如果当前平台支持音高补偿,则默认启用该功能,但用户可根据需要将其禁用。 |
MediaPlayer.Unavailable | 媒体播放器在当前平台上无法执行音高补偿。 |
该属性于 Qt 6.10 版本中引入。
playbackOptions : PlaybackOptions [since 6.10]
该属性提供了PlaybackOptions API,可用于对媒体播放选项进行底层控制。虽然我们强烈建议使用MediaPlayer 的默认设置,但在默认选项不理想的情况下,仍可使用此API针对特定用例优化媒体播放。
播放选项将在下次更改 `MediaPlayer::source ` 时生效。
该属性自 Qt 6.10 起引入。
playbackRate : real
该属性以正常速率的倍数形式存储媒体的播放速率。
有关详细信息,请参阅QMediaPlayer::playbackRate 。
默认值为1.0 。
playbackState : enumeration [read-only]
该属性保存媒体播放的状态。其取值可以是以下之一:
| 属性值 | 描述 |
|---|---|
| PlayingState | 媒体当前正在播放。这与playing 属性表示相同。 |
| PausedState | 媒体的播放已被暂停。 |
| 已停止状态 | 媒体的播放尚未开始。 |
playing : bool [read-only, since 6.5]
指示媒体当前是否正在播放。
该属性在 Qt 6.5 中引入。
另请参阅 playbackState 。
position : int
该值表示当前播放位置,以媒体开始以来的毫秒数表示。位置的周期性变化将通过 positionChanged() 信号进行提示。
如果seekable 属性为true,则该属性可设置为毫秒单位。
seekable : bool [read-only]
该属性用于指定媒体的position 是否可以更改。
source : url
该属性存储媒体的源 URL。
Item {
MediaPlayer {
id: mediaplayer
source: "file:///test.mp4"
videoOutput: videoOutput
audioOutput: AudioOutput {
}
}
VideoOutput {
id: videoOutput
anchors.fill: parent
}
MouseArea {
id: playArea
anchors.fill: parent
onPressed: mediaplayer.play();
}
}另请参阅 QMediaPlayer::setSource()。
subtitleTracks : list<mediaMetaData> [read-only]
该属性包含一个元数据列表。每个索引对应一条字幕轨道。
元数据包含描述各个字幕轨的属性。对于字幕轨而言,Language 通常是最重要的属性。
当该属性被修改时,会触发tracksChanged 信号。
另请参阅 mediaMetaData 。
videoOutput : VideoOutput
该属性用于存储目标视频输出。接受一个VideoOutput 元素。
另请参阅 QMediaPlayer::setVideoOutput()。
videoTracks : list<mediaMetaData> [read-only]
该属性包含一个元数据列表。每个索引对应一条视频音轨。
元数据包含描述各个音轨的属性。
当该属性被修改时,会发出tracksChanged 信号。
另请参阅 mediaMetaData 。
信号文档
errorOccurred(error, errorString)
当发生error 时,会发出此信号。errorString 参数可能包含有关该错误的更多详细信息。
注意: 相应的处理程序 为onErrorOccurred 。
另请参阅 QMediaPlayer::Error 。
playbackStateChanged()
当playbackState 属性发生变化时,会触发此信号。
注意: 相应的处理程序 为onPlaybackStateChanged 。
playingChanged()
当playing 属性发生变化时,会触发此信号。
注意: 相应的处理程序 为onPlayingChanged 。
tracksChanged()
当audioTracks 、subtitleTracks 或videoTracks 属性发生变化时,会触发此信号。
注意: 相应的处理程序 为onTracksChanged 。
方法文档
void pause()
暂停媒体的播放。
将playbackState 属性设置为PausedState,并将playing 更改为false 。
void play()
开始或继续播放媒体。
将playbackState 属性设置为PlayingState,并将playing 更改为true 。
void stop()
停止媒体的播放。
将playbackState 属性设置为StoppedState,并将playing 更改为false 。
© 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.