欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++?Qt實(shí)現(xiàn)音視頻播放功能

 更新時(shí)間:2021年11月25日 17:16:03   作者:Test_233  
Qt版本?5.9?基于C++11?Qt核心組件與附加組件安裝時(shí)請(qǐng)打鉤?否則可能出現(xiàn)項(xiàng)目中缺少視頻播放模塊的問題,由于最近著手的Qt項(xiàng)目需要視頻播放自己做的時(shí)候踩很多坑避免以后踩坑,故在此記錄實(shí)現(xiàn)過程,感謝的朋友參考下吧

由于最近著手的Qt項(xiàng)目需要視頻播放?自己做的時(shí)候踩了很多坑?避免以后踩坑 故在此記錄實(shí)現(xiàn)過程?

Qt版本 5.9?基于C++11?Qt核心組件與附加組件安裝時(shí)請(qǐng)打鉤?否則可能出現(xiàn)項(xiàng)目中缺少視頻播放模塊的問題

1.首先創(chuàng)建一個(gè)新項(xiàng)目?并且打開.pro項(xiàng)目設(shè)置文件

創(chuàng)建項(xiàng)目

新項(xiàng)目目錄結(jié)構(gòu)

2.在.pro文件中添加模塊?

如下所示?這是我們音視頻播放的基礎(chǔ)模塊?其他設(shè)置根據(jù)自己的項(xiàng)目需求自行添加或修改?修改完成后ctrl+s保存文件

QT += multimedia multimediawidgets
//QT += core gui是新項(xiàng)目默認(rèn)帶的 不需要自己手動(dòng)添加

添加模塊

3.接下來我們?cè)O(shè)置界面(GUI)?雙擊Forms文件夾下的.ui文件?打開GUI編輯頁面?如下

雙擊.ui文件

Push Button、Widget

我們目前不做太復(fù)雜的功能?當(dāng)前僅需要Push Button和Widget兩種控件

Push Button我們用于控制播放 Widget用于顯示視頻

4.將上述兩個(gè)控件 左鍵按住不放?拖入右側(cè)窗口界面中?

將控件拖入

對(duì)控件進(jìn)行一些基礎(chǔ)設(shè)置?為了增強(qiáng)可讀性?我這里對(duì)控件名稱做了一些修改?對(duì)準(zhǔn)需要修改的控件單擊右鍵并選擇"改變對(duì)象名稱"

左側(cè)的按鈕改名為pushButton_set?右側(cè)按鈕改名為pushButton_start

上面的框是Widget?這個(gè)控件拖進(jìn)來后基本為透明狀?僅有邊框輪廓?我們改名為widget_video

ctrl+s保存文件

5.設(shè)置播放窗口

右擊剛剛拖入的Widget控件?點(diǎn)擊"提升為"

這里我們需要將Widget提升為QVideoWidget

類名和頭文件都寫為QVideoWidget?選中全局包含?然后添加并提升

6.按鈕信號(hào)設(shè)置

右鍵第一個(gè)按鈕?選擇"轉(zhuǎn)到槽"

選擇clicked()并點(diǎn)擊下方OK按鈕

此時(shí)我們會(huì)跳轉(zhuǎn)到代碼編輯頁面

在寫代碼之前?我們還需要引入一些需要的頭文件

#include <QMediaPlaylist>
#include <QMediaPlayer>

現(xiàn)在我們創(chuàng)建一個(gè)全局的播放器變量

QMediaPlayer *player = new QMediaPlayer();

然后編寫剛剛的按鈕槽函數(shù)

void MainWindow::on_pushButton_set_clicked()
{
    player->setMedia(QMediaContent(QUrl::fromLocalFile("C:/Users/Administrator/Music/MV/test.mp4")));
//這里的文件路徑是本地的視頻文件全路徑 根據(jù)自己的情況來設(shè)置
//player是剛剛建立的播放器變量
 
    player->setVideoOutput(ui->widget_video);
//widget_video是我們剛剛拖入的widget控件名稱
}

做完這些后你的源文件.cpp看起來應(yīng)該是這樣的

注意?這里的視頻文件路徑請(qǐng)根據(jù)你的視頻存放位置填寫?

如果你是從windows直接復(fù)制的路徑?那么應(yīng)該是\?此時(shí)可能會(huì)跟C++的字符轉(zhuǎn)義符\沖突?那么請(qǐng)?jiān)赲前面再加上一個(gè)\?或者將\改為/

直接復(fù)制路徑:
C:\Users\Administrator\Music\MV\test.mp4
 
修改為:
C:\\Users\\Administrator\\Music\\MV\\test.mp4
或:
C:/Users/Administrator/Music/MV/test.mp4

7.同樣照上述過程?編寫第二個(gè)按鈕的槽函數(shù)

回到.ui文件?右鍵第二個(gè)按鈕?并選擇"轉(zhuǎn)到槽"?并選擇clicked()

跳轉(zhuǎn)到槽函數(shù)編寫位置?寫入以下內(nèi)容:

void MainWindow::on_pushButton_start_clicked()
{
    player->play();
}

最終完成的兩個(gè)槽函數(shù)應(yīng)該是這樣的

8.編譯運(yùn)行

至此主要部分已經(jīng)完成?我們編譯運(yùn)行軟件看看效果如何

編譯很順利?沒有Error?軟件成功運(yùn)行起來了 出現(xiàn)我們剛剛編輯的窗口

至此基本播放功能實(shí)現(xiàn)完成?可以看到我下載到本地的MV已經(jīng)播放出來了

9.踩坑提醒

點(diǎn)擊開始播放沒有反應(yīng)并在Qt信息欄出現(xiàn)錯(cuò)誤提示:DirectShowPlayerService::doRender: Unresolved error code 0x80040266

這是由于系統(tǒng)中不存在DirectShow解碼器?因?yàn)镼t的視頻播放控件是基于DirectShowPlayerService開發(fā)的

解決方案:安裝一個(gè)DirectShow解碼器?直接百度下載安裝一個(gè)到系統(tǒng)?如:LAV?Filters?重新編譯運(yùn)行

錯(cuò)誤提示:DirectShowPlayerService::doSetUrlSource: Unresolved error code 0x80004005 ()

解決方案:將視頻文件放在全英文且無空格的路徑下?修改路徑后重新編譯運(yùn)行

到此這篇關(guān)于C++ Qt實(shí)現(xiàn)音視頻播放的文章就介紹到這了,更多相關(guān)C++ Qt音視頻播放內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺談C++ Explicit Constructors(顯式構(gòu)造函數(shù))

    淺談C++ Explicit Constructors(顯式構(gòu)造函數(shù))

    下面小編就為大家?guī)硪黄獪\談C++ Explicit Constructors(顯式構(gòu)造函數(shù))。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-12-12
  • C/C++?Qt?MdiArea?多窗體組件應(yīng)用教程

    C/C++?Qt?MdiArea?多窗體組件應(yīng)用教程

    MDI窗體控件類似于畫布,該控件只具備展示窗體的功能,無法實(shí)現(xiàn)生成窗體,所以我們需要在項(xiàng)目中手動(dòng)增加自定義的Dialog對(duì)話框,并對(duì)該對(duì)話框進(jìn)行一定的定制,這篇文章主要介紹了C/C++?Qt?MdiArea?多窗體組件應(yīng)用,需要的朋友可以參考下
    2021-12-12
  • C語言實(shí)現(xiàn)英文單詞助手

    C語言實(shí)現(xiàn)英文單詞助手

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)單詞小助手,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • C語言實(shí)現(xiàn)簡易五子棋

    C語言實(shí)現(xiàn)簡易五子棋

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)簡易五子棋,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • Qt一個(gè)進(jìn)程運(yùn)行另一個(gè)進(jìn)程的實(shí)現(xiàn)方法

    Qt一個(gè)進(jìn)程運(yùn)行另一個(gè)進(jìn)程的實(shí)現(xiàn)方法

    本文主要介紹了Qt一個(gè)進(jìn)程運(yùn)行另一個(gè)進(jìn)程的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • 嵌入式C語言輕量級(jí)程序架構(gòu)內(nèi)核編寫

    嵌入式C語言輕量級(jí)程序架構(gòu)內(nèi)核編寫

    這篇文章主要介紹了嵌入式C語言輕量級(jí)程序架構(gòu)內(nèi)核編寫,文章將讓大家學(xué)到輕量級(jí)程序架構(gòu)的內(nèi)核實(shí)現(xiàn)原理、輕量級(jí)程序架構(gòu)的設(shè)計(jì)思想、了解單片機(jī)常用的程序架構(gòu)等更多C語言輕量級(jí)程序架構(gòu)相關(guān)內(nèi)容,需要的朋友可以參考一下
    2022-03-03
  • Cocos2d-x UI開發(fā)之CCControlSlider控件類使用實(shí)例

    Cocos2d-x UI開發(fā)之CCControlSlider控件類使用實(shí)例

    這篇文章主要介紹了Cocos2d-x UI開發(fā)之CCControlSlider控件類使用實(shí)例,本文代碼中包含大量注釋講解了CCControlSlider控件類的使用,需要的朋友可以參考下
    2014-09-09
  • 最新評(píng)論