[gelöst]Qt5.5 QVideoWidget zeigt nichts an

Alles rund um die Programmierung mit Qt
Antworten
ThunderStorm
Beiträge: 15
Registriert: 30. April 2013 15:52

[gelöst]Qt5.5 QVideoWidget zeigt nichts an

Beitrag von ThunderStorm »

Mein Programm hat ein Fenster, das als Mainlayout ein Vertical Layout hat. Zu diesem Layout möchte ich ein VideoWidget hinzufügen und auf diesem ein Video abspielen. Allerdings ist das Fenster komplett leer wenn ich das Programm starte und zeigt folglich nichts an.
In der .pro Datei habe ich die Plugins

Code: Alles auswählen

QT       += core gui multimedia multimediawidgets
eingebunden.
Die Qt Version ist Qt5.5 MSVC2013 32Bit

Code: Alles auswählen

    #include <QMediaPlayer>
    #include <QMediaPlaylist>
    #include <QVideoWidget>
    //Von http://doc.qt.io/qt-5/videooverview.html
    QMediaPlayer* player = new QMediaPlayer();

    QMediaPlaylist* playlist = new QMediaPlaylist(player);
    playlist->addMedia(QUrl("test.mp4"));

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

    ui_->verticalLayout->addWidget(videoWidget, 1);
    videoWidget->show();
    player->play();
Ich hoffe, jemand hat eine Idee.
Zuletzt geändert von ThunderStorm am 14. Oktober 2015 21:58, insgesamt 2-mal geändert.
Mit freundlichen Grüßen,
ThunderStorm
softwaremaker
Beiträge: 149
Registriert: 1. April 2009 19:25

Re: Qt5.5 QVideoWidget zeigt nichts an

Beitrag von softwaremaker »

Bei http://doc.qt.io/qt-5/qmediaplayer.html gibts doch Beispiele.
Habe mit QMediaPlayer noch nichts gemacht, aber:
- nach playlist->addMedia(...); ist bei dir kein playlist->setCurrentIndex(1);
- player->setPlaylist(playlist); fehlt (new QMediaPlaylist(player) sorgt nur dafür, dass wenn player gelöscht wird auch playlist gelöscht wird)
- deine Pfadangabe zur mp4 ist problematisch: QUrl("test.mp4"), wo liegt die mp4? auf Laufwerk 1, 2, 3 und dort im Pfad x, y oder z?
ThunderStorm
Beiträge: 15
Registriert: 30. April 2013 15:52

Re: Qt5.5 QVideoWidget zeigt nichts an

Beitrag von ThunderStorm »

Danke für deine Antwort.
Ich habe meinen absoluten Pfad zur Video Datei nur hier im Forum gekürzt, um euch den langen Pfad zu ersparen. Der von mir verwendete Pfad ist korrekt.
Auch wenn ich das Beispiel von der Qt Website direkt kopiere, tut sich bei mir trotzdem nichts.
Mit freundlichen Grüßen,
ThunderStorm
softwaremaker
Beiträge: 149
Registriert: 1. April 2009 19:25

Re: Qt5.5 QVideoWidget zeigt nichts an

Beitrag von softwaremaker »

QMediaPlayer hat Eigenschaften: error und mediaStatus, die solltest du mal auswerten.
ThunderStorm
Beiträge: 15
Registriert: 30. April 2013 15:52

Re: Qt5.5 QVideoWidget zeigt nichts an

Beitrag von ThunderStorm »

Nachdem ich eine Zeile Code zum Debuggen hinzugefügt habe, wird mir folgendes ausgegeben, was danach aussieht, dass das Video ohne Fehler abgespielt wurde.

Code: Alles auswählen

State:  QMediaPlayer::StoppedState  Error: QMediaPlayer::NoError
Allerdings kann man immer noch nichts sehen.
Mit freundlichen Grüßen,
ThunderStorm
softwaremaker
Beiträge: 149
Registriert: 1. April 2009 19:25

Re: Qt5.5 QVideoWidget zeigt nichts an

Beitrag von softwaremaker »

alle nötigen libs aus \plugins\ vorhanden? z.B. dsengine.dll
ThunderStorm
Beiträge: 15
Registriert: 30. April 2013 15:52

Re: Qt5.5 QVideoWidget zeigt nichts an

Beitrag von ThunderStorm »

Die Plugins (u.a. dsengine.dll) befinden sich im Qt Ordner (Qt5.5.0\5.5\msvc2013\plugins\mediaservice\...) und da ich das Programm ja im Qt Debugger ausführe, müssten die Pfade so gesetzt sein, dass alles erkannt wird, weil ja Libraries wie Qt5Core.dll auch geladen werden können. Also können plugins als Fehlerquelle vermutlich ausgeschlossen werden.
ThunderStorm
Beiträge: 15
Registriert: 30. April 2013 15:52

Re: [ungelöst]Qt5.5 QVideoWidget zeigt nichts an

Beitrag von ThunderStorm »

Nachdem der Code jetzt QMediaPlayer::setMedia() aufruft, funktioniert alles.

Code: Alles auswählen

    QMediaPlayer* player = new QMediaPlayer();
    player->setMedia(QUrl("test.mp4"));

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

    videoWidget->show();
    player->play();
Scheinbar war es ein Problem mit der QMediaPlaylist.
Mit freundlichen Grüßen,
ThunderStorm
Antworten