最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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)目中缺少視頻播放模塊的問(wèn)題,由于最近著手的Qt項(xiàng)目需要視頻播放自己做的時(shí)候踩很多坑避免以后踩坑,故在此記錄實(shí)現(xiàn)過(guò)程,感謝的朋友參考下吧

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

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

1.首先創(chuàng)建一個(gè)新項(xiàng)目?并且打開(kāi).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.接下來(lái)我們?cè)O(shè)置界面(GUI)?雙擊Forms文件夾下的.ui文件?打開(kāi)GUI編輯頁(yè)面?如下

雙擊.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)來(lái)后基本為透明狀?僅有邊框輪廓?我們改名為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)到代碼編輯頁(yè)面

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

#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ù)自己的情況來(lái)設(shè)置
//player是剛剛建立的播放器變量
 
    player->setVideoOutput(ui->widget_video);
//widget_video是我們剛剛拖入的widget控件名稱
}

做完這些后你的源文件.cpp看起來(lái)應(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.同樣照上述過(guò)程?編寫第二個(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)行軟件看看效果如何

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

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

9.踩坑提醒

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

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

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

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

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

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

相關(guān)文章

  • C++ virtual destructor虛擬析構(gòu)函數(shù)

    C++ virtual destructor虛擬析構(gòu)函數(shù)

    C++中基類采用virtual虛析構(gòu)函數(shù)是為了防止內(nèi)存泄漏。具體地說(shuō),如果派生類中申請(qǐng)了內(nèi)存空間,并在其析構(gòu)函數(shù)中對(duì)這些內(nèi)存空間進(jìn)行釋放,今天通過(guò)本文給大家介紹C++ virtual destructor虛擬析構(gòu)函數(shù)的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2021-05-05
  • 介紹C語(yǔ)言中tolower函數(shù)的實(shí)例

    介紹C語(yǔ)言中tolower函數(shù)的實(shí)例

    這篇文章主要介紹了介紹C語(yǔ)言中tolower函數(shù)的實(shí)例,本文列出了該函數(shù)的頭文件,功能說(shuō)明等,以及如何使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C++類與對(duì)象的詳細(xì)說(shuō)明

    C++類與對(duì)象的詳細(xì)說(shuō)明

    這篇文章主要為大家詳細(xì)介紹了C++的類與對(duì)象,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-02-02
  • c++基礎(chǔ)算法動(dòng)態(tài)DP解決CoinChange問(wèn)題

    c++基礎(chǔ)算法動(dòng)態(tài)DP解決CoinChange問(wèn)題

    這篇文章主要為大家介紹了c++基礎(chǔ)算法如何利用動(dòng)態(tài)DP來(lái)解決Coin Change的問(wèn)題示例過(guò)程,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-10-10
  • 基于OpenCV自定義色條實(shí)現(xiàn)灰度圖上色功能代碼

    基于OpenCV自定義色條實(shí)現(xiàn)灰度圖上色功能代碼

    今天通過(guò)本文給大家分享基于OpenCV自定義色條實(shí)現(xiàn)灰度圖上色功能代碼,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-11-11
  • C++中隱式類型轉(zhuǎn)換學(xué)習(xí)筆記

    C++中隱式類型轉(zhuǎn)換學(xué)習(xí)筆記

    在本篇文章里小編給大家整理的是一篇關(guān)于C++中隱式類型轉(zhuǎn)換學(xué)習(xí)筆記內(nèi)容,有興趣的跟著小編來(lái)學(xué)習(xí)下吧。
    2020-02-02
  • 基于Qt實(shí)現(xiàn)離線瓦片地圖下載器

    基于Qt實(shí)現(xiàn)離線瓦片地圖下載器

    這篇文章主要介紹了如何通過(guò)Qt實(shí)現(xiàn)離線瓦片地圖下載器,文中的示例代碼對(duì)我們學(xué)習(xí)或工作有一定的幫助,感興趣的可以跟隨小編一起學(xué)習(xí)一下
    2022-01-01
  • 用C語(yǔ)言求解一元二次方程的簡(jiǎn)單實(shí)現(xiàn)

    用C語(yǔ)言求解一元二次方程的簡(jiǎn)單實(shí)現(xiàn)

    這篇文章主要介紹了用C語(yǔ)言求解一元二次方程的簡(jiǎn)單實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • 詳解C語(yǔ)言的基本數(shù)據(jù)類型

    詳解C語(yǔ)言的基本數(shù)據(jù)類型

    這篇文章主要為大家介紹了C語(yǔ)言的基本數(shù)據(jù)類型,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-01-01
  • 基于C語(yǔ)言實(shí)現(xiàn)靜態(tài)通訊錄的示例代碼

    基于C語(yǔ)言實(shí)現(xiàn)靜態(tài)通訊錄的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何利用C語(yǔ)言實(shí)現(xiàn)一個(gè)簡(jiǎn)單的靜態(tài)通訊錄,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C語(yǔ)言有一定幫助,需要的可以參考一下
    2022-07-07

最新評(píng)論

凤山市| 台东市| 商洛市| 新平| 康保县| 桂东县| 丹凤县| 萍乡市| 师宗县| 永吉县| 闽侯县| 名山县| 河曲县| 潼南县| 开阳县| 藁城市| 长沙市| 民勤县| 木里| 永年县| 兴国县| 凭祥市| 嘉禾县| 建宁县| 景洪市| 岳普湖县| 邵东县| 大渡口区| 惠来县| 临清市| 长葛市| 阿拉善左旗| 天全县| 德安县| 章丘市| 武平县| 土默特左旗| 会理县| 修文县| 永胜县| 依兰县|