Lecture d'un fichier vidéo avec Qt

a marqué ce sujet comme résolu.
Auteur du sujet

Salut, tout le monde.

Je développe un logiciel de lecture vidéo. en développant ce logiciel, je rencontre un problème que je ne peux pas résoudre seul. c’est mon code source :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include "controleur.h"
#include <QVBoxLayout>
    #include <QMediaPlayer>
    #include <QVideoWidget>
    #include <QFileDialog>
    #include <QString>
#include <QDebug>

Controleur::Controleur(QWidget *parent) : QWidget(parent)
{
    QMediaPlayer *mediaplayer = new QMediaPlayer(this,QMediaPlayer::VideoSurface);
    connect(mediaplayer,&QMediaPlayer::bufferStatusChanged,this,&Controleur::on_bufferStatusChanged);
    connect(mediaplayer,SIGNAL(error(QMediaPlayer::Error)),this,SLOT(on_error2(QMediaPlayer::Error)));

    QVideoWidget *videoWidget = new QVideoWidget(this);

    this->setLayout(new QVBoxLayout);
    this->layout()->addWidget(videoWidget);

    QString chemin = QFileDialog::getOpenFileName(nullptr,"Chemint",QString(),"Video(*.mp4)");

    mediaplayer->setMedia(QMediaContent(QUrl(chemin)));
    mediaplayer->setVideoOutput(videoWidget);
    videoWidget->setFixedSize(300,500);
    mediaplayer->play();
    videoWidget->show();
}

void Controleur::on_bufferStatusChanged(int niveau){

    qDebug() << "il y a " << niveau << "% de remplisage.";
}
void Controleur::on_error2(QMediaPlayer::Error error){

    switch(error){

    case QMediaPlayer::NoError :

        qDebug() << "Aucune erreur n'est survenue.";
        break;

    case QMediaPlayer::ResourceError :
        qDebug() << " Une ressource média n'a pas pu être résolue.";
        break;

    case QMediaPlayer::FormatError :
        qDebug() << "Le format d'une ressource média n'est pas (entièrement) supporté. La lecture peut toujours être possible, mais sans composant audio ou vidéo.";
        break;

    case QMediaPlayer::NetworkError :
        qDebug() << "Une erreur réseau s'est produite.";
        break;

    case QMediaPlayer::AccessDeniedError :
        qDebug() << "Il n'y a pas les permissions appropriées pour lire une ressource média.";
        break;

    case QMediaPlayer::ServiceMissingError :
        qDebug() << "Un service de lecture valide n'a pas été trouvé, la lecture ne peut pas continuer.";
        break;
    }
}

Mon problème est que ma ressource vidéo n’est pas résolue comme le programme le dit après avoir envoyé le signal &QMediaPlayer::error(QMediaPlayer::Error).

Si quelqu’un peut m’aider, je suis disponible.

et je vous remercie à l’avance.

+0 -0

Bonjour,

Cela fait longtemps que je n’ai pas fait de Qt mais regardant la doc, il semble que tu puisses récupérer le signal grâce à une autre classe Qt QOverload.

Je ne sais pas si cela corrigera le problème mais je pense que c’est un bon point de départ (code non testé) :

1
2
connect(mediaplayer, QOverload<QMediaPlayer::Error>::of(&QMediaPlayer::error), 
        this, SLOT(on_error2(QMediaPlayer::Error)));

Édité par Bidouille

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte