繁体   English   中英

使用Qt / ActiveQt控制Windows Media Player 12

Controlling Windows Media Player 12 with Qt / ActiveQt

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我正在尝试使用ActiveQt将影片嵌入Qt(4.7.1)小部件中:

VideoManager2.h:

    #ifndef VIDEOMANAGER2_H_
    #define VIDEOMANAGER2_H_

    #include <QtCore/QtCore>
    #include <QtGui/QtGui>
    #include "qaxwidget.h"

    class VideoManager2: public QWidget{
        Q_OBJECT
        //Q_ENUMS(ReadyStateConstants);


        enum PlayStateConstants { Stopped = 0, Paused = 1, Playing = 2 };
        enum ReadyStateConstants { Uninitialized = 0, Loading = 1, Interactive = 3, Complete = 4 };

        QAxWidget *wmp;

    private slots:  
         void onPlayStateChange(int a, int b);
         void onReadyStateChange(ReadyStateConstants readyState);

    public:
        VideoManager2();
    };

    #endif /* VIDEOMANAGER2_H_ */

VideoManager2.cpp:

    #include <QtCore/QtCore>
    #include <QtGui/QtGui>
    #include <InitGuid.h>
    #include "VideoManager2.h"
    #include "wmp.h"
    #include "qaxobject.h"

    VideoManager2::VideoManager2() {

        wmp = new QAxWidget(this);
        wmp->setControl("{6BF52A52-394A-11D3-B153-00C04F79FAA6}");

        wmp->setProperty("ShowControls", false);
        wmp->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);

        wmp->setProperty("URL", "C:/Users/qxf3567/Downloads/demoMedia/movie/earth.avi");
        qDebug("Version Info: %s", qPrintable(wmp->property("versionInfo").toString()));
        qDebug("Playing: %s", qPrintable(wmp->property("URL").toString()));
        qDebug("State: %s", qPrintable(wmp->property("playState").toString()));

        QAxObject* currentMedia= wmp->querySubObject("currentMedia");
        IWMPMedia *media;
        currentMedia->queryInterface(QUuid(__uuidof(IWMPMedia)), (void **)&media);


        {
            BSTR durationStr;
            media->get_durationString(&durationStr);
            QString convertedBSTR((QChar*) durationStr, wcslen(durationStr));
            qDebug("Duration: %s", qPrintable(QString(convertedBSTR)));

        }

    }

     void VideoManager2::onPlayStateChange(int a, int b){
     }
     void VideoManager2::onReadyStateChange(ReadyStateConstants readyState){
     }

main.cpp:

    ...
    QScrollArea *movieWidget = new QScrollArea(groupBox_2);
    VideoManager2 vm;
    ui->movieWidget->setWidget(&vm);
    ...

输出:

    Version Info: 12.0.7601.18741
    Playing: C:\Users\qxf3567\Downloads\demoMedia\movie\earth.avi
    State: 9
    Duration: 00:00

我可以获得WMPlayer的版本号,但是要播放的电影显示为0长度。 这可能是什么问题? 好像一开始就找不到文件?

问题暂未有回复.您可以查看右边的相关问题.
2 如何使用Windows.Media.Miracast

我在Windows.Media.Miracast中找到了有关MiracastReceiver的文档。( https://docs.microsoft.com/zh-cn/uwp/api/windows.media.miracast )但Windows.Media中也存在类和函数.Miracast ...

4 如何使用来自activeqt的派生接口?

我有一个我认为在COM中相当简单的界面。 我想在activeqt中实现它。 我能够使用ATL原型,但是我更愿意使用qt小部件和信号而不是COM控件。 我可以在python的comtypes中加载ATL COM dll并运行help(ATLDll) ,并且该接口的相关扩展是 我不 ...

5 使用Qt和cmake构建非控制台Windows应用

我在查找Windows下使用cmake,Qt5和Visual C ++构建非控制台应用程序的最新方法时遇到了麻烦。 看起来在Qt4天内将QT_USE_QTMAIN设置为true就足够了。 现在,假设链接Qt5 :: WinMain就足够了。 但是,这些都不对我有用-我的应用程序继续打开控制 ...

6 使用libVLC media_list而不是media_player播放歌曲目录

我正在尝试使用libVLC v2 C绑定来播放给定路径下目录中的所有歌曲( mp3 / m4a / ogg )。 我目前只使用模块libvlc_media_player ,与类似的方法libvlc_media_player_set_media从给定的路径设置的一首歌。 我看到有一个名 ...

9 如何实现自己的cast.receiver.media.Player

前言 我有自己的播放器,带有自己的本地音频引擎。 最近,我决定向其中添加强制转换功能。 为了将音频“流式传输”到自定义演员表应用程序,我决定使用WebSocket并在其上发送float32 PCM,然后通过WebAudio API进行播放。 因为自定义音频格式,所以我决定编写自己的c ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM