Михаиллл
Михаиллл11 сентября 2019 г. 13:45

Как в Qt воспроизвести видео?

Добрый день.
Как в Qt воспроизвести видео?
Это мой код, но никакое окно не появляется:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QtMultimedia/QMediaPlayer>
#include <QtMultimedia/QMediaPlaylist>
#include <QtMultimediaWidgets/QVideoWidget>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    QMediaPlayer *player = new QMediaPlayer;

    QMediaPlaylist *playlist = new QMediaPlaylist(player);
    playlist->addMedia(QUrl("C:/Users/New Owner/Downloads/example.mp4"));
    playlist->addMedia(QUrl("C:/Users/Public/Videos/Sample Videos/Живая природа.wmv"));

    QVideoWidget *videoWidget = new QVideoWidget(this);
    videoWidget->setSizeIncrement(600,600);
    player->setVideoOutput(videoWidget);

    videoWidget->show();
    playlist->setCurrentIndex(0);
    player->play();
}

MainWindow::~MainWindow()
{
    delete ui;
}


Так тоже не работает:

    QMediaPlayer* player = new QMediaPlayer(this);

    QGraphicsVideoItem *item = new QGraphicsVideoItem;
    player->setVideoOutput(item);
    QGraphicsView * graphicsView = new QGraphicsView(this);
    graphicsView->scene()->addItem(item);
    graphicsView->show();

    player->setMedia(QUrl("C:/Users/Public/Videos/Sample Videos/Живая природа.wmv"));
    player->play();
Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

Вам это нравится? Поделитесь в социальных сетях!

4
Михаиллл
  • 11 сентября 2019 г. 14:23

Так работает, но как переместить это решение в метод класса?

#include <QApplication>
#include <QMainWindow>
#include <QVideoWidget>
#include <QMediaPlayer>
#include <QMediaPlaylist>

int main(int argc, char * argv[])
{
    QApplication testApp(argc, argv);
    QMainWindow w;

    QVideoWidget videoWidget(&w);
    w.setCentralWidget(&videoWidget);

    QMediaPlayer *player = new QMediaPlayer(&w);

    player->setMedia( QUrl::fromLocalFile("E:\\big_buck_bunny.mp4") );
    player->setVideoOutput(&videoWidget);

    w.show();

    player->play();

    return testApp.exec();
}
    Михаиллл
    • 11 сентября 2019 г. 14:32
    • (ред.)

    Так работает, осталось понять как растянуть все видео на весь экран.

        QMediaPlayer *player = new QMediaPlayer(this);
        QVideoWidget *videoWidget = new QVideoWidget(this);
        videoWidget->setSizeIncrement(900,900);
        player->setVideoOutput(videoWidget);
    
        videoWidget->show();
        player->setMedia( QUrl::fromLocalFile("C:/Users/New Owner/Downloads/example.wmv") );
        player->play();
    
      Evgenii Legotckoi
      • 11 сентября 2019 г. 14:37
      • Ответ был помечен как решение.

      Нужно использовать Layout в окне. Например у меня получилось так сделать.

      mainwindow.h

      #ifndef MAINWINDOW_H
      #define MAINWINDOW_H
      
      #include <QMainWindow>
      
      class QVideoWidget;
      class QMediaPlayer;
      
      namespace Ui {
      class MainWindow;
      }
      
      class MainWindow : public QMainWindow
      {
          Q_OBJECT
      
      public:
          explicit MainWindow(QWidget *parent = nullptr);
          ~MainWindow();
      
      private:
          void onPlayButtonCLicked();
      
          Ui::MainWindow *ui;
          QVideoWidget *m_videoWidget;
          QMediaPlayer *m_player;
      };
      
      #endif // MAINWINDOW_H
      
      

      mainwindow.cpp

      #include "mainwindow.h"
      #include "ui_mainwindow.h"
      
      #include <QMediaPlayer>
      #include <QMediaPlaylist>
      #include <QVideoWidget>
      
      MainWindow::MainWindow(QWidget *parent) :
          QMainWindow(parent),
          ui(new Ui::MainWindow)
      {
          ui->setupUi(this);
      
          m_videoWidget = new QVideoWidget(this);
          ui->gridLayout->addWidget(m_videoWidget);
          m_player = new QMediaPlayer(m_videoWidget);
          m_player->setVideoOutput(m_videoWidget);
      
          connect(ui->playButton, &QPushButton::clicked, this, &MainWindow::onPlayButtonCLicked);
      }
      
      MainWindow::~MainWindow()
      {
          delete ui;
      }
      
      void MainWindow::onPlayButtonCLicked()
      {
          m_player->setMedia(QUrl::fromLocalFile("/home/dekadent/anim_card_flip.mp4"));
          m_player->play();
      }
      
      

      Здесь полный код проекта Video.zip Video.zip

        Михаиллл
        • 11 сентября 2019 г. 14:47

        С таким подходом помогло создать виджет в редакторе, изменить его класс на QVideoWidget и уже его растянуть.

          Комментарии

          Только авторизованные пользователи могут публиковать комментарии.
          Пожалуйста, авторизуйтесь или зарегистрируйтесь
          AD

          C++ - Тест 004. Указатели, Массивы и Циклы

          • Результат:50баллов,
          • Очки рейтинга-4
          m
          • molni99
          • 26 октября 2024 г. 11:37

          C++ - Тест 004. Указатели, Массивы и Циклы

          • Результат:80баллов,
          • Очки рейтинга4
          m
          • molni99
          • 26 октября 2024 г. 11:29

          C++ - Тест 004. Указатели, Массивы и Циклы

          • Результат:20баллов,
          • Очки рейтинга-10
          Последние комментарии
          i
          innorwall15 ноября 2024 г. 8:26
          Qt/C++ - Урок 031. QCustomPlot - строим график по времени buy generic priligy We can just chat, and we will not lose too much time anyway
          i
          innorwall15 ноября 2024 г. 6:03
          Qt/C++ - Урок 060. Настройка внешнего вида приложения в рантайме I didnt have an issue work colors priligy dapoxetine 60mg revia cost uk August 3, 2022 Reply
          i
          innorwall14 ноября 2024 г. 22:42
          Как Копировать Файлы в Linux If only females relatives with DZ offspring were considered these percentages were 23 order priligy online uk
          i
          innorwall14 ноября 2024 г. 20:09
          Qt/C++ - Урок 068. Hello World с использованием системы сборки CMAKE в CLion ditropan pristiq dosing With the Yankees leading, 4 3, Rivera jogged in from the bullpen to a standing ovation as he prepared for his final appearance in Chicago buy priligy pakistan
          Сейчас обсуждают на форуме
          i
          innorwall14 ноября 2024 г. 14:39
          добавить qlineseries в функции priligy amazon canada 93 GREB1 protein GREB1 AB011147 6
          i
          innorwall11 ноября 2024 г. 21:55
          Всё ещё разбираюсь с кешем. priligy walgreens levitra dulcolax carbs The third ring was found to be made up of ultra relativistic electrons, which are also present in both the outer and inner rings
          9
          9Anonim25 октября 2024 г. 19:10
          Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…
          ИМ
          Игорь Максимов3 октября 2024 г. 14:05
          Реализация навигации по разделам Спасибо Евгений!

          Следите за нами в социальных сетях