2016-12-25 18 views
3

OS X El Capitan v10.11.6でQt5でムービーを再生しようとしています。 QMediaPlayer、QMediaPlaylist、QVideoWidgetを使って再生します。QMediaPlayerでムービーを再生できない

Qtのドキュメントと同じソースコードを書きますが、黒いウィンドウしか表示せず、ムービーも再生しません。

これは私のソースコードです。

main.cppに

#include <QApplication> 

#include "mainwindow.h" 

int main(int argc, char* argv[]) 
{ 
    QApplication app(argc, argv); 

    MainWindow mainwindow; 
    mainwindow.show(); 

    return app.exec(); 
} 

mainwindow.h

#ifndef MAINWINDOW_H 
#define MAINWINDOW_H 

#include <QWidget> 

class QMediaPlayer; 
class QMediaPlaylist; 
class QVideoWidget; 

class MainWindow : public QWidget 
{ 
    Q_OBJECT 

public: 
    MainWindow(QWidget* parent = 0); 

private: 
    QMediaPlayer* player; 
    QMediaPlaylist* playlist; 
    QVideoWidget* videoWidget; 
}; 

#endif 

mainwindow.cpp

#include <QtWidgets> 
#include <QMediaPlayer> 
#include <QMediaPlaylist> 
#include <QVideoWidget> 

#include "mainwindow.h" 

MainWindow::MainWindow(QWidget* parent) 
    : QWidget(parent) 
{ 
    player = new QMediaPlayer; 
    playlist = new QMediaPlaylist; 
    videoWidget = new QVideoWidget; 

    player->setPlaylist(playlist); 
    player->setVideoOutput(videoWidget); 

    playlist->addMedia(QUrl::fromLocalFile("box.mp4")); 

    videoWidget->show(); 
    playlist->setCurrentIndex(1); 
    player->play(); 

    QHBoxLayout* mainLayout = new QHBoxLayout; 
    mainLayout->addWidget(videoWidget); 

    setLayout(mainLayout); 
} 

私は "box.mp4" は、同じディレクトリに存在する確認してください。

問題はどこですか?この問題を解決するには、どのようにソースコードを修正する必要がありますか?

+1

playlist->addMedia(QUrl::fromLocalFile("box.mp4")); 

は 'バイナリディレクトリ内box.mp4'ですか?このプログラムをコマンドラインで実行し、出力があるかどうか確認してください。 –

+0

完全パスを追加 – eyllanesc

+0

@Shmuel H:コマンドラインでプログラムを実行しますが、同じ出力が得られます。 –

答えて

1

mainwindow.cppのフルパスにメディアファイルパスを変更するだけです。

playlist->addMedia(QUrl::fromLocalFile("/path/to/box.mp4")); 
関連する問題