Qt5::QMediaPlayer を使用してビデオ プレーヤーを作成し、次のようにランダムな期間、ランダムにいくつかのビデオを再生します。
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();
}
2 つの問題があります
。 1. 位置を変更する場合
player->setPosition(qrand() % player->duration());
少し遅延があります (私のクライアントはこれを受け入れることができますが、スムーズな方が良いです)
2. ビデオ ソースが次のように変更された場合:
playlist->setCurrentIndex(playlist->nextIndex());
player->play();
クライアントが望んでいない短時間の黒い画面があります。彼は、少なくとも位置を変更したときと同じ効果を望んでいます。
player->setPosition(qrand() % player->duration());
Windows で Qt5 を使用してビデオ ソースを変更すると、この黒い画面を削除できますか? または、他のライブラリ/フレームワークでこれを行うことができますか (ビデオ ソースを変更するときに黒い画面のギャップなしでビデオのリストを再生します)? (MacOSでは切り替えがスムーズです)
ありがとうございます!