当我尝试播放不在 qrc 中的媒体文件时,出现错误“尝试播放无效的 Qt 资源”

Posted

技术标签:

【中文标题】当我尝试播放不在 qrc 中的媒体文件时,出现错误“尝试播放无效的 Qt 资源”【英文标题】:I get an error "Attempting to play invalid Qt resource" when I try to play a mediafile which is not in the qrc 【发布时间】:2016-01-22 07:55:24 【问题描述】:

当然,如果我在 qrc 文件中包含特定的媒体文件,那么下面的 qml 程序似乎可以检测到它。

我希望用户通过文件浏览器选择他想要的媒体文件,然后播放。

所以,目前,我将文件路径以字符串的形式传递如下:

import QtQuick 2.0
import QtMultimedia 5.5

Rectangle

    id:     head
    width:  500
    height: 500

    property int    heightOfButtons: 50
    property int    widthOfButtons: 50
    property string videoSource: "/home/*****/1.mp4"

    Video
    
        id: video
        width : head.width
        height : head.height
        source: head.videoSource

        MouseArea
        
            anchors.fill: parent
            onClicked:  video.play() 
        

        onErrorStringChanged: console.log("errorstring: " + errorString)
        focus: true
    

    Grid
    
        columns: 1; columnSpacing: 10
        Rectangle
        
            height: head.heightOfButtons; width: head.widthOfButtons; color: "green"
            id: playStop
            MouseArea anchors.fill: parent; onClicked: video.playbackState == MediaPlayer.PlayingState ? video.pause() : video.play()
            Text color: "white"; text: "Play/Pause";  anchors.right: parent.right; anchors.horizontalCenter: parent.horizontalCenter
        

        Rectangle
        
            height: rightGrid.heightOfButtons; width: rightGrid.widthOfButtons; color: "red"
            id: stop
            MouseArea anchors.fill: parent; onClicked: video.stop()
            Text color: "white"; text: "Stop";  anchors.right: parent.right; anchors.horizontalCenter: parent.horizontalCenter;
        
    

文件存在,但程序显示错误:

qml: errorstring: Attempting to play invalid Qt resource

如何播放用户动态选择的文件?

【问题讨论】:

【参考方案1】:

解决方案是将媒体文件的路径指定为:

property string videoSource: "file:///home/***/1.mp4"

http://doc.qt.io/qt-5/qml-url.html

【讨论】:

以上是关于当我尝试播放不在 qrc 中的媒体文件时,出现错误“尝试播放无效的 Qt 资源”的主要内容,如果未能解决你的问题,请参考以下文章

在调试模式下编译时出现qrc_resource.cpp错误

如何从resources_rc.py恢复resource.qrc文件

从 QRC 文件加载 qmldir

运行时错误中的“值不在预期范围内”是啥意思?

YTPlayerView 不在模拟器上播放内容(解码失败,错误代码)

如何在 Actionscript 3 中播放与 SWF 不在同一目录中的声音?