I want to make application on Qt, which can play more then one video simultaneously. I want to make application for security camera, so I have to show all camera's stream simultaneously. I made media application with help of QMediaPlayer and QVideoWidget, which support all type of video.
I also get help from bellow site, but I don't want to use Vlc Lib. Playing multiple video using libvlc and Qt
Please guide me path to achieve my destination.
Should I have to use Phonon?
I try some code to display two video simultaneously, but get some problem.
main.cpp
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QGridLayout>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
for(int i=0; i<2; i++){
for(int j=0; j<2; j++){
player[i][j] = new QMediaPlayer(this);
vw[i][j] = new QVideoWidget(this);
player[i][j]->setVideoOutput(vw[i][j]);
ui->graphicsView->setViewport(vw[i][j]);
//ui->graphicsView_2->setViewport(vw[i][j]);
slider = new QSlider(this);
bar = new QProgressBar(this);
slider1 = new QSlider(this);
slider->setOrientation(Qt::Horizontal);
ui->statusBar->addPermanentWidget(slider);
ui->statusBar->addPermanentWidget(bar);
ui->statusBar->addPermanentWidget(slider1);
connect(player[i][j],&QMediaPlayer::durationChanged,slider,&QSlider::setMaximum);
connect(player[i][j],&QMediaPlayer::positionChanged,slider,&QSlider::setValue);
connect(slider,&QSlider::sliderMoved,player[i][j],&QMediaPlayer::setPosition);
slider1->setValue(50);
connect(slider1,&QSlider::sliderMoved,player[i][j],&QMediaPlayer::setVolume);
connect(player[i][j],&QMediaPlayer::durationChanged,bar,&QProgressBar::setMaximum);
connect(player[i][j],&QMediaPlayer::positionChanged,bar,&QProgressBar::setValue);
}
}
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_actionOpen_triggered()
{
QString filename = QFileDialog::getOpenFileName(this,"Open a File","","Video File (*.*)");
on_actionStop_triggered();
player[1][1]->setMedia(QUrl::fromLocalFile(filename));
on_actionPlay_triggered();
}
void MainWindow::on_actionPlay_triggered()
{
player[1][1]->play();
ui->statusBar->showMessage("Playing");
}
void MainWindow::on_actionPause_triggered()
{
player[1][1]->pause();
ui->statusBar->showMessage("Paused...");
}
void MainWindow::on_actionStop_triggered()
{
player[1][1]->stop();
ui->statusBar->showMessage("Stopped");
}
void MainWindow::on_actionMute_triggered()
{
player[1][1]->setMuted(1);
ui->statusBar->showMessage("Muted...");
}
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QMediaPlayer>
#include <QVideoWidget>
#include <QFileDialog>
#include <QProgressBar>
#include <QSlider>
#include <QWidget>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void on_actionOpen_triggered();
void on_actionPlay_triggered();
void on_actionPause_triggered();
void on_actionStop_triggered();
void on_actionMute_triggered();
private:
Ui::MainWindow *ui;
QMediaPlayer* player[2][2];
QVideoWidget* vw[2][2];
QProgressBar* bar;
QSlider* slider;
QSlider* slider1;
};
#endif // MAINWINDOW_H
Now I want to play same video on Graphics widget. Is it possible? If yes, then How?
Can anyone guide me, how can I add thread on ui->GraphicsView and ui->GraphicsView_2 in mainwindo.cpp file?
Thanks Tejas Virpariya

