C++ Qt 5.2+;iOS:使用QMediaPlayer和QVideoWidget播放视频

C++ Qt 5.2+;iOS:使用QMediaPlayer和QVideoWidget播放视频,c++,ios,qt,qt5,qmediaplayer,C++,Ios,Qt,Qt5,Qmediaplayer,我在文件夹“iosVideoTest/”中设置了一个小项目,用于在Qt/iOS应用程序中播放视频: iosVideoTest.pro: QT += core gui multimedia multimediawidgets QTPLUGIN += qavfmediaplayer CONFIG += mobility greaterThan(QT_MAJOR_VERSION, 4): QT += widgets TARGET = iosVideoTest TEMPLATE =

我在文件夹“iosVideoTest/”中设置了一个小项目,用于在Qt/iOS应用程序中播放视频:

iosVideoTest.pro:

QT       += core gui multimedia multimediawidgets
QTPLUGIN += qavfmediaplayer
CONFIG   += mobility
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET   = iosVideoTest
TEMPLATE = app
SOURCES  += main.cpp
HEADERS  +=
deployment.files  = ../iosVideoTest/media/9d0386eada217cd63a752458aeca89d6.mp4
deployment.path   =
QMAKE_BUNDLE_DATA += deployment
main.cpp:

#include <QApplication>
#include <QMainWindow>
#include <QMediaPlayer>
#include <QUrl>
#include <QVideoWidget>
int main(int argc, char *argv[]){
    QApplication a(argc, argv);
    QMainWindow w;
    QVideoWidget* pVWidget = new QVideoWidget;
    QMediaPlayer* pPlayer = new QMediaPlayer;
    // with the following line a video is playing
    pPlayer->setMedia(QUrl("http://www.rmh.de/9d0386eada217cd63a752458aeca89d6/9d0386eada217cd63a752458aeca89d6.mp4"));
    // either of the following lines renders only a black screen
    // pPlayer->setMedia(QUrl::fromLocalFile(QCoreApplication::applicationDirPath() + "9d0386eada217cd63a752458aeca89d6.mp4"));
    // pPlayer->setMedia(QUrl::fromLocalFile("9d0386eada217cd63a752458aeca89d6.mp4"));
    pPlayer->setVideoOutput(pVWidget);
    w.setCentralWidget(pVWidget);
    w.show();
    pPlayer->play();
    return a.exec();
}
#包括
#包括
#包括
#包括
#包括
int main(int argc,char*argv[]){
质量保证申请a(argc、argv);
qmainw窗口;
QVideoWidget*pVWidget=新的QVideoWidget;
QMediaPlayer*pPlayer=新的QMediaPlayer;
//下面一行显示一段视频
pPlayer->setMedia(QUrl(“http://www.rmh.de/9d0386eada217cd63a752458aeca89d6/9d0386eada217cd63a752458aeca89d6.mp4"));
//以下任一行仅渲染黑屏
//pPlayer->setMedia(QUrl::fromLocalFile(QCoreApplication::applicationDirPath()+“9d0386eada217cd63a752458aeca89d6.mp4”);
//pPlayer->setMedia(QUrl::fromLocalFile(“9d0386eada217cd63a752458aeca89d6.mp4”);
pPlayer->setVideoOutput(pVWidget);
w、 setCentralWidget(pVWidget);
w、 show();
pPlayer->play();
返回a.exec();
}
我已将视频复制到项目文件夹中的./media目录中

使用视频作品的网址。 但是,将视频捆绑在应用程序内并使用本地文件名只会呈现黑屏

编辑:使用图像(位于./iosvidetest/media/img.png),通过QMAKE_BUNDLE_数据将其绑定,并将其作为本地文件与QLabel/QPixmap一起使用,就像一个符咒

有人能告诉我使用本地视频文件的正确方向吗

问候,,
汤姆

你检查过路径了吗?在使用本地url之前,请检查以确保文件存在。我知道在OSX Mavericks上,苹果改变了默认为root.Yap的路径。以这种方式使用本地图像文件效果良好但感谢菲亚特指出这一点。我刚刚添加了一个注释。您是否尝试过将视频转换为iTunes的本机格式,或者使用更通用的编解码器?(使用手刹或类似工具)我不认为这是编解码器的问题。使用web URL是可行的。