Multimedia(二:一些参数)
上一节实现了简单的媒体播放,这节在上一节的基础上完善一下!
- 当播放媒体时可以通过MediaPlayer元素的volume属性来控制音量
- duration与position属性可以用来创建一个进度条。如果seekable属性为true,当拨动进度条时可以更新position属性
- mediaObject属性的notifyInterval属性改变可以设置每个position之间更新的毫秒数,增加用户界面的平滑度。
- 使用status属性来监听播放器,这个属性是一个枚举,它枚举了播放器可能出现的状态:
- MediaPlayer.UnknownStatus - 未知状态
- MediaPlayer.NoMedia - 播放器没有指定媒体资源,播放停止
- MediaPlayer.Loading - 播放器正在加载媒体
- MediaPlayer.Loaded - 媒体已经加载完毕,播放停止
- MediaPlayer.Stalled - 加载媒体已经停止
- MediaPlayer.Buffering - 媒体正在缓冲
- MediaPlayer.Buffered - 媒体缓冲完成
- MediaPlayer.EndOfMedia - 媒体播放完毕,播放停止
- MediaPlayer.InvalidMedia - 无法播放媒体,播放停止
- 调用play,pause或者 stop将会切换状态
- 当前的播放状态可以使用playbackState属性跟踪,
- 这个值可能是MediaPlayer.PlayingState,MediaPlayer.PasuedState或者 MediaPlayer.StoppedState
- 使用autoPlay属性,MediaPlayer在source属性改变时将会尝试进入播放状态。
- 类似的属性autoLoad将会导致播放器在source属性改变时尝试加载媒体。
- loops属性控制source将会被重复 播放多少次,设置属性为MediaPlayer.Infinite将会导致不停的重播
import QtQuick 2.9
import QtQuick.Window 2.2
import QtMultimedia 5.0Window {visible: truewidth: 770height: 480title: qsTr("Hello World")Item {id: rootanchors.fill: parentMediaPlayer{id:player// 无限循环loops: MediaPlayer.Infinitesource:"file:///E:/QT_Object/Multimedia/test.mp4"}VideoOutput{id:outputanchors.fill: parentsource: player}// 进度条矩形框Rectangle {id: progressBaranchors.left: parent.leftanchors.right: parent.rightanchors.bottom: parent.bottomanchors.margins: 100height: 30color: "blue"Rectangle {anchors.left: parent.leftanchors.top: parent.topanchors.bottom: parent.bottomborder.width: 2border.color: "blue"// 获得当前的播放进度// 显示当前播放进度// 和 playser.position 绑定了// playser.position 更新的话 width 就会更新width: player.duration > 0?parent.width*player.position/player.duration : 0color: "red"}MouseArea {anchors.fill: parentonClicked: {if (player.seekable) {// 更新视频播放进度player.seek(player.duration * mouse.x / width)}}}}// 利用 onMediaObjectChanged 设置更新进度的频率Connections {target: playeronMediaObjectChanged: {if (player.mediaObject) {player.mediaObject.notifyInterval = 50;}}}// 利用 onCompleted 设置更新进度的频率Component.onCompleted: {player.play();if (player.mediaObject) {player.mediaObject.notifyInterval = 50;}}}
}

在这个 demo 里面加入了进度条、循环播放、player 更新 position 的频率!
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
