Video.play返回DirectShowPlayerService :: doSetUrlSource:未解决的错误代码800c000d

时间:2015-09-07 10:11:18

标签: qt qml directshow

使用Qt版本5.4.2

返回错误代码:DirectShowPlayerService :: doSetUrlSource:未解决的错误代码800c000d

QML文件已使用Video QML类型编写,如下所示。我在项目文件(.pro)中添加了以下内容

Qt + =多媒体

QML文件中的代码片段。

Video {
    id: video
    width : 800
    height : 600
    source : "Video.mp4"

    MouseArea {
        anchors.fill: parent
        onClicked: {
            video.play();
        }
    }

    focus: true
    Keys.onSpacePressed: video.playbackState == MediaPlayer.PlayingState ? video.pause() : video.play()
    Keys.onLeftPressed: video.seek(video.position - 5000)
    Keys.onRightPressed: video.seek(video.position + 5000)
}

有关此错误的任何指示都会有所帮助。

2 个答案:

答案 0 :(得分:3)

我遇到了同样的问题,修正了:

改变

source: "file://D:/Temp/video/ccc.wmv"

source: "file:///D:/Temp/video/ccc.wmv"

因为提到的消息doSetUrlSource表示可能使用了错误的网址。

答案 1 :(得分:2)

您是否通过错误跟踪器进行了搜索?我找到了QTMOBILITY-1461,例如:

  

Windows7上的默认directshow过滤器不足以播放m4a文件。它不是AAC编解码器问题,但没有用于识别m4a容器的过滤器。

     

" K-Lite Codec Pack"提供" MPC - MP4 Splitter"滤波器可用于将m4a源连接到Microsfot编解码器滤波器" Microsoft DTV-DVD音频解码器"能够播放文件。

     

Windows7上的Windows Media Player 12使用Media Foundation而不是DirectShow播放.m4a .m2ts,.mp4和.mov格式(对于其使用DirectShow过滤器的其他格式)。这就解释了为什么我们不能在没有第三方过滤器的情况下使用QMediaPlayer的当前directshow后端实现。

     

我们可能会考虑在futrure中添加Media Foundation支持,但是现在您必须安装第三方过滤器才能在Windows7上运行。

因此,安装K-Lite Codec Pack可能有所帮助。

您还可以尝试this mailing list thread中的建议。