如何在 Qt Creator 中的 Qt Widgets 应用程序中播放本地视频?

HiL*_*Los 4 c++ video qt widget qt-creator

这可能是一个非常菜鸟的问题...我对 Qt 很陌生,正在尝试在 Qt 创建者中编程。现在我从 Qt 创建者创建了一个新的 Qt Widgets 应用程序,并想用它播放视频。现在我的项目中有以下 6 个文件:

  • 项目
    • 项目专业版
    • 标头
      • 视频播放器.h
    • 来源
      • 主程序
      • 视频播放器.cpp
    • 形式
      • 视频播放器.ui
    • 其他文件
      • /用户/某人/某处
        • 演示.mp4

当我运行应用程序时(也许使用一些名为 QVideoPlayer 的工具),我应该在哪里以及如何编写代码以使其播放 Demo.mp4?我应该在 videoplayer.ui 上添加一些 Qwidget 吗?现在,我的 videoplayer.ui 上有四个按钮“播放”、“暂停”、“全屏”和“重新排列”。我想要的结果是具有以下特征的东西:

  • 按播放按钮即可播放整个窗口左上角的 Demo.mp4
  • 按暂停键暂停
  • 按 full_screen 进入全屏(如果 QMediaPlayer 本身可以进入/退出全屏,则不需要此功能)
  • 按重新排列将播放窗口从左上角移至右上角
  • 附加:快进和快退(同样,如果 QVideoPlayer 或 Qt 提供的东西尚未具有此功能)

dom*_*om0 5

您正在寻找Qt 多媒体小部件。(运行 Linux 时您可能需要安装额外的软件包)。

基本思想是这样的:

  • 在 UI 方面,您使用QVideoWidget. 这是视频显示的地方。
    • 这是您要添加到.ui文件中的内容。
    • 注意fullScreen属性。
  • 在逻辑方面,您可以使用QMediaPlayer控制播放内容和播放时间的 。
    • 两者通过调用联系起来QMediaPlayer::setVideoOutput(yourVideoWidgetGoesHere);
    • 然后你添加一个QMediaPlaylist到你的QMediaPlayer.
    • 最后打电话QMediaPlayer::play(),你应该可以走了

如果到目前为止还有效,那么您需要一些基本的控件。QMediaPlayer提供了以下插槽,其功能正如其名称所示:

  • pause()
  • play()
  • stop()
  • setPosition(int),参数以毫秒为单位。duration()可能会感兴趣。
  • setVolume(int)setMuted(bool)。音量从 0 到 100。
  • setPlaybackRate(double)
  • 元数据可通过以下方式获取metaData(QString key)http ://qt-project.org/doc/qt-5/qmediaobject.html#metaData

其中每一个都有一个相应的变化信号,对您来说非常有趣的可能是positionChanged(int)更新滑块或与当前位置类似的信号。

Qt 文档提供的基本示例:

player = new QMediaPlayer;

playlist = new QMediaPlaylist(player);
playlist->addMedia(QUrl("http://example.com/myclip1.mp4"));
playlist->addMedia(QUrl("http://example.com/myclip2.mp4"));

videoWidget = new QVideoWidget;
player->setVideoOutput(videoWidget);

videoWidget->show();
playlist->setCurrentIndex(1);
player->play(); 
Run Code Online (Sandbox Code Playgroud)