Rectangle {
id: video
x: 0
y:0
width: 960
height: 288
visible:root.mediaEnble
MediaPlayer {
id: mediaPlayer
loops: MediaPlayer.Infinite
source: "video_test.mp4"
autoPlay: false
onError: {
console.log(errorString)
}
onPlaybackStateChanged: {
console.log("onplaybackchanged!")
switch (playbackState) {
case MediaPlayer.PlayingState:
state.text = "播放中"
break
case MediaPlayer.PausedState:
state.text = "已暂停"
break
case MediaPlayer.StoppedState:
state.text = "已结束"
break
}
}
}
VideoOutput {
anchors.fill: parent
source: mediaPlayer
}
这是调用
onMediaEnbleChanged: {
console.log("mediaEnble: "+mediaEnble)
if(root.mediaEnble){
video.visible=true
mediaPlayer.play()
}
else
{
video.visible=false
mediaPlayer.stop()
}
}
项目里有使用APPmediaplayer继承QmediaPlayer用于播放MP3,没问题。怀疑对qml有影响,于是将它的对象delete,然并卵。后又用APPmediaplayer直接播放MP4声音,qml的media放画面,然后就直接黑屏卡死。求解决
QmediaPlayer 适配的有BUG,多个项目里已经实测了。
你播放使用或者音乐,推荐不要使用 QmediaPlayer ,多个项目里实测,BUG一大堆。 可以用libvlc、MDK来实现,直接支持QML非简单。如果你技术到位,用ffmpeg重新实现也可以。当前推荐你直接用libvlc、MDK来实现。如果libvlc、MDK之间要进行选择。那么推荐你用MDK来实现。
MDK和libvlc都是跨平台的,支持widget、qml方式调用。支持Android、IOS、windows、Linux、嵌入式Linux多个平台。你值得拥有。
MDK库使用方法: https://blog.csdn.net/xiaolong1126626497/article/details/117557963
libvlc库使用方法: https://blog.csdn.net/xiaolong1126626497/article/details/119110154
你和以上百度找一找,输入关键字,出来一大推,很多人碰到了这个问题,但其实获取不是你代码的原因。
楼上说的挺好的
确实使用 QmediaPlayer ,多个项目里实测,BUG一大堆
可以用libvlc、MDK来实现,直接支持QML非简单。
建议你换一种视频播放器,可以使用ffmpeg,参考如下链接进行操作
FFmpeg视频播放器开发-FFmpeg简介与项目环境搭建(一) - 知乎
配置文件是怎么写的?
不使用ui设计界面创建控件,而使用代码创建,不会出现卡顿,本人采用此方法,setParent,setGeometry,放到正确的位置,再次运行,发现播放不再卡顿
可以参考下文:
https://blog.csdn.net/weixin_51019869/article/details/118723401