在QMediaPlayer seek / setPosition之后,QGraphicsVideoItem不再有屏幕更新

时间:2016-06-02 20:47:06

标签: qt video youtube qmediaplayer

我得到了QT5.6示例" videoplayer"。它适用于本地文件。 我修改了#34;打开文件"功能使用互联网URL而不是本地文件。实际上我使用youtube网址。像这样:

void VideoPlayer::openFile()
{
//QString fileName = QFileDialog::getOpenFileName(this, tr("Open Movie"),QDir::homePath());
QString fileName = "https://r4---sn-n8v7znls.googlevideo.com/videoplayback?initcwndbps=1427500&dur=3369.354&sver=3&sparams=dur%2Cid%2Cinitcwndbps%2Cip%2Cipbits%2Citag%2Clmt%2Cmime%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Cratebypass%2Crequiressl%2Csource%2Cupn%2Cexpire&lmt=1416581653227418&requiressl=yes&ip=80.68.2.81&mime=video%2Fmp4&source=youtube&mm=31&mn=sn-n8v7znls&pl=23&id=o-AODorl7SvqZSnDSvxck5hqt4t3DHXmuquI-oLniRvtIu&ms=au&mt=1464897333&mv=m&expire=1464919182&upn=vf3wyJFr-XM&key=yt6&ipbits=0&ratebypass=yes&itag=18&fexp=9412859%2C9414702%2C9416126%2C9416891%2C9419451%2C9422596%2C9423965%2C9425351%2C9426985%2C9428398%2C9431012%2C9432822%2C9433096%2C9433221%2C9433946%2C9434790%2C9435527%2C9435876%2C9436917%2C9437067%2C9437180%2C9437553&signature=A22462E28C81BAFEA1D411B53F4AA7624179608D.BB0B47C09F09A93C3751D49EEE61AF6059A635FB";
if (!fileName.isEmpty()) {
    mediaPlayer.setMedia(QUrl(fileName));
    playButton->setEnabled(true);
    mediaPlayer.play();
    qDebug() << "playback started!!";
}

}

应用程序正常启动并可以播放视频,但是! 当我使用长视频时,我会向前寻找位置,之后不再有视频屏幕更新。不呈现视频帧。

这个QT示例演示了QGraphicsScene上的QGraphicsVideoItem - 我需要在我的应用程序中使用它们。但是如何处理寻找位置?它对http URL视频无法正常工作!除此之外,mediaPlayer :: isSeekable()返回&#34; true&#34;。 在寻找位置后,玩家的行为就像它真正从新的位置点播放一样,因为像periodicChanged()这样的通知信号会被定期调用。 QMediaStatus是QMediaPlayer :: BufferedMedia。但没有屏幕更新!

我有一个位置处理程序:

void VideoPlayer::positionChanged(qint64 position)
{
positionSlider->setValue(position);
qDebug()
        << " pos " << position
        << " sta " << mediaPlayer.mediaStatus();
}

用户在寻找位置后,我会看到调试输出:

pos  2363199  sta  QMediaPlayer::BufferedMedia
pos  2364049  sta  QMediaPlayer::BufferedMedia
pos  2364049  sta  QMediaPlayer::BufferedMedia
pos  2365050  sta  QMediaPlayer::BufferedMedia
pos  2365983  sta  QMediaPlayer::BufferedMedia
pos  2365983  sta  QMediaPlayer::BufferedMedia

好像在玩吗?但没有视频输出,没有音频输出......没什么。 如果是因特网mp4 URL源,如何处理QMediaPlayer的seek / setPosition?

0 个答案:

没有答案