Qt 无法使用QML MediaPlayer循环视频
我正在尝试创建一个简单的视频播放器,它只在循环中播放指定的视频。虽然视频按预期播放,但不会循环 以下是我正在使用的代码:Qt 无法使用QML MediaPlayer循环视频,qt,qml,qtmultimedia,Qt,Qml,Qtmultimedia,我正在尝试创建一个简单的视频播放器,它只在循环中播放指定的视频。虽然视频按预期播放,但不会循环 以下是我正在使用的代码: import QtQuick 2.0 import QtMultimedia 5.0 Rectangle { width : 320 height : 240 signal buttonPressed(string msg) property string currentVideo function playVideo(vid
import QtQuick 2.0
import QtMultimedia 5.0
Rectangle
{
width : 320
height : 240
signal buttonPressed(string msg)
property string currentVideo
function playVideo(videoName)
{
currentVideo = videoName
videoPlayer.source = videoName
videoPlayer.seek(1)
videoPlayer.play()
}
function loopVideo()
{
if(videoPlayer.duration === 0)
{
playVideo(currentVideo)
}
}
function stopVideoPlayback()
{
videoPlayer.stop()
}
MediaPlayer {
id: videoPlayer
source: ""
autoPlay: false
autoLoad: false
loops: 100
}
VideoOutput {
id: videoOutput
source: videoPlayer
anchors.fill: parent
visible: true
}
}
< C++ >我调用<代码>播放视频< /代码>。它按预期开始播放。但是,一旦完成,帧将在最后一帧冻结。我试图通过调用QTimer中的loopVideo函数来循环它。这也行不通
我可能做错了什么 您的代码正常。(提示:您可能希望使用
MediaPlayer.Infinite
代替100
进行循环)
我相信你的情况和我的一样
我用MediaPlayer
组件玩了一点,最后我无法搜索视频,因为seekable
总是false
。而seekable
是false
,因为QML以某种方式将我的文件用作实时流,结果duration
属性为0
。
还要注意的是,onPaused
和onStopped
从未被触发,position
只是在视频结束后增加(直播流永不结束)
现在我认为这与循环有关,因为基本上循环寻找回0。因为没有持续时间(MediaPlayer
认为它是实时流),所以它无法搜索(和循环)
我发现的一个讨厌的解决方法是(附加到代码中):
其中VIDEO\u LENGTH
是以毫秒为单位的视频文件长度
更新:
更新2:我已经下载了MSVC版本的Qt,media player也可以正常工作 因此,mingw的Qt中存在缺陷 使用此解决方法(我不推荐)或下载MSVC版本
使用停止信号尝试以下代码:
MediaPlayer {
id: mediaplayer
source: "groovy_video.mp4"
onStopped: play()
}
请解释你的答案。一个好的答案总是会有一个解释,说明做了什么以及为什么这样做,不仅是为了OP,而且是为了未来的访客。
MediaPlayer {
id: mediaplayer
source: "groovy_video.mp4"
onStopped: play()
}