Михаиллл
МихаилллҚыр. 11, 2019, 11: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
Михаиллл
  • Қыр. 12, 2019, 12: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();
}
    Михаиллл
    • Қыр. 12, 2019, 12: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
      • Қыр. 12, 2019, 12: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

        Михаиллл
        • Қыр. 12, 2019, 12:47 Т.Ж.

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

          Пікірлер

          Тек рұқсаты бар пайдаланушылар ғана пікір қалдыра алады.
          Кіріңіз немесе Тіркеліңіз
          Ua

          Qt - Тест 001. Сигналы и слоты

          • Нәтиже:84ұпай,
          • Бағалау ұпайлары4
          Ua

          Qt - Тест 001. Сигналы и слоты

          • Нәтиже:42ұпай,
          • Бағалау ұпайлары-8
          ОК

          Qt - Тест 001. Сигналы и слоты

          • Нәтиже:47ұпай,
          • Бағалау ұпайлары-6
          Соңғы пікірлер
          ИМ
          Игорь МаксимовҚар. 22, 2024, 9:51 Т.Қ.
          Django - Оқулық 017. Теңшелген Django кіру беті Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
          Evgenii Legotckoi
          Evgenii LegotckoiҚаз. 31, 2024, 11:37 Т.Қ.
          Django - Сабақ 064. Python Markdown кеңейтімін қалай жазуға болады Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
          A
          ALO1ZEҚаз. 19, 2024, 5:19 Т.Қ.
          Qt Creator көмегімен fb3 файл оқу құралы Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
          ИМ
          Игорь МаксимовҚаз. 5, 2024, 4:51 Т.Қ.
          Django - Сабақ 064. Python Markdown кеңейтімін қалай жазуға болады Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
          d
          dblas5Шілде 5, 2024, 8:02 Т.Қ.
          QML - Сабақ 016. SQLite деректер қоры және онымен QML Qt-та жұмыс істеу Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
          Енді форумда талқылаңыз
          f
          firstlunoxodАқп. 15, 2025, 1:46 Т.Қ.
          Рисование на QGraphicsScene при зажатой кнопке мыши Подскажите, пожалуйста! Как данный класс можно дополнить, чтобы созданные объекты можно было перемещать мышкой по сцене?
          Дмитрий
          ДмитрийАқп. 3, 2025, 4:24 Т.Қ.
          Создание deb-пакета. Как создать ярлык на рабочем столе после установки собственного deb-пакета? Всем привет. Сделал свой deb-пакет с программой. Всё устанавливается и работает. Ставлю по пути /usr/bin/my_application. Как для пользователя при установке пакета сразу создать ярлык на раб…
          NW
          Nayo WaiҚаң. 30, 2025, 7:22 Т.Қ.
          не запускается компьютер!!! Не запускается компьютер (точнее работает блок , но сам монитор вообще жесть)В общем я ничего с интернета не скачивала в последнее время. На компе никаких левых пр…
          n
          nklyҚаң. 3, 2025, 12:52 Т.Қ.
          Нужно запретить перемещение только некоторых итемов, остальные перемещать можно. Вопрос решен. Узнать QModelIndex элемента на который мы перетаскиваем другой элемент, можно с помощью функции indexAt(event->position().toPoint()) представления QTreeViev вызываемой в переопр…
          M
          MarselТам. 17, 2023, 12:26 Т.Ж.
          OAuth2.0 через VK, получение email Спасибо большое за помощь и простите за то что отнял время своей невнимательностью.

          Бізді әлеуметтік желілерде бақылаңыз