int main(int argc, char *argv[]) {
QApplication a(argc, argv);
QMediaPlaylist* playlist = new QMediaPlaylist(&a);
playlist->addMedia(QUrl::fromLocalFile("./Resources/fractal-files/A-060405V4651.WMV"));
playlist->addMedia(QUrl::fromLocalFile("./Resources/fractal-files/E-102604.WMV"));
playlist->addMedia(QUrl::fromLocalFile("./Resources/fractal-files/C-102304.WMV"));
QMediaPlayer* player = new QMediaPlayer(&a);
player->setPlaylist(playlist);
QVideoWidget* videoWidget = new QVideoWidget;
player->setVideoOutput(videoWidget);
player->play();
videoWidget->show();
QTimer* t = new QTimer;
QObject::connect(t, &QTimer::timeout, [&](){
playlist->setCurrentIndex(playlist->nextIndex());
player->play();
videoWidget->setWindowTitle(playlist->currentMedia().canonicalUrl().fileName());
t->start((qrand()%5 + 5)*1000);
});
t->start((qrand()%5 + 5)*1000);
QTimer* t2 = new QTimer;
QObject::connect(t2, &QTimer::timeout, [&](){
player->setPosition(qrand() % player->duration());
videoWidget->setWindowTitle(playlist->currentMedia().canonicalUrl().fileName());
t2->start((qrand()%2 + 2)*1000);
});
t2->start((qrand()%2 + 2)*1000);
return a.exec();
}
这里有两个问题:
1.当改变位置
player->setPosition(qrand() % player->duration());
有一点延迟(我的客户能接受这一点,但顺利越好)
2.当次e视频源改为:
playlist->setCurrentIndex(playlist->nextIndex());
player->play();
有一个客户端不想要的持续时间很短的黑屏。他想要的效果,至少改变现在的位置时为相同:
player->setPosition(qrand() % player->duration());
可以改变与QT5 Windows上的视频源,当我们删除此黑屏?或者我们可以用其他库/框架来做到这一点(更改视频源时播放没有黑屏差距的视频列表)? (在MacOs上,切换顺畅)
非常感谢!
2015-11-02
aviit
+0
这是一个相对的问题:http://stackoverflow.com/questions/27517619/is-there-a-way-in-qt-to-force-qmediaplayer-to-buffer-a-file-without-playing-它 –
+0
我有一些提示使用QMediaGaplessPlaybackControl,但我没有成功 –
本文探讨了如何在Qt5应用程序中使用QMediaPlayer和QMediaPlaylist减少视频切换时的黑屏现象,并优化播放位置设置以降低延迟。作者寻求解决方案,包括可能的QMediaGaplessPlaybackControl应用和跨平台兼容性改进。
2224

被折叠的 条评论
为什么被折叠?



