QWebView 播放网络视频

Posted 积跬步,到千里

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QWebView 播放网络视频相关的知识,希望对你有一定的参考价值。

 最近想看某站的VIP视频,但是网络上的软件用着都不怎么习惯,还有些要收费(收费还不如买VIP了..),所以自己研究做个网络播放器,使用的是QWebView。

1.设置WebView

ui->webView->settings()->setAttribute(QWebSettings::PluginsEnabled,true);
    ui->webView->settings()->setAttribute(QWebSettings::JavaEnabled,true);
    ui->webView->settings()->setAttribute(QWebSettings::javascriptEnabled,true);
    ui->webView->settings()->setAttribute(QWebSettings::JavascriptCanOpenWindows,true);
    ui->webView->settings()->setAttribute(QWebSettings::JavascriptCanAccessClipboard,true);
    ui->webView->settings()->setAttribute(QWebSettings::DeveloperExtrasEnabled,true);
    ui->webView->settings()->setAttribute(QWebSettings::SpatialNavigationEnabled,true);
    ui->webView->settings()->setAttribute(QWebSettings::LinksIncludedInFocusChain,true);
    ui->webView->settings()->setAttribute(QWebSettings::AcceleratedCompositingEnabled,true);
    ui->webView->settings()->setAttribute(QWebSettings::AutoLoadImages,true);

2.加载网页之后,网页存在链接,要使链接生效,则需要设置

ui->webView->page()->setLinkDelegationPolicy(QWebPage::DelegateAllLinks);

3.当点击网页中的链接会触发信号(前提是设置链接生效)=》linkClicked(const QUrl &arg1)

void MainWindow::on_webView_linkClicked(const QUrl &arg1)
{
    ui->webView->load(arg1);
}

4.这时候运行就能上网了,但是播放视频显示flash过期,查了哈是需要安装 flash player for firefox,安装之后运行:

5.至此可以播放视频了,但是却发现点击网页内的搜索等按钮是没有反应的,这可不行,重写QWebPage

bool MyWebPage::acceptNavigationRequest(QWebFrame *frame, const QNetworkRequest &request, QWebPage::NavigationType type)
{
    if(type == 0 || type == 1)//如果是用户点击
    {
        if(frame != mainFrame()){ //如果不是在本窗口的连接
            emit openLink(request.url());//发送打开新连接信号
        }else{
            emit loadLink(request.url());//发送点击连接信号
        }
    }

    return QWebPage::acceptNavigationRequest(frame, request, type);
}

6.ok,到这里基本上可以满足我看视频的需求了,附结果图(鬼吹灯第14集):

 

以上是关于QWebView 播放网络视频的主要内容,如果未能解决你的问题,请参考以下文章

错误:Qt5 视频渲染错误代码 80040218

当替换片段视频仍在android中播放背景时

在 HTML5 Video 中,如何播放长视频中的小片段?

Android主流视频播放及缓存实现原理调研

QNetworkReply:在 QWebView 中禁用了网络访问

视频没有在片段 ViewPager 中暂停