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

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

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

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

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

1.首先創(chuàng)建一個新項(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)帶的 不需要自己手動添加

添加模塊

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

雙擊.ui文件

Push Button、Widget

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

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

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

將控件拖入

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

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

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

ctrl+s保存文件

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

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

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

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

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

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

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

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

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

#include <QMediaPlaylist>
#include <QMediaPlayer>

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

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)該是這樣的

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

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

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

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

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

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

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

最終完成的兩個槽函數(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)錯誤提示:DirectShowPlayerService::doRender: Unresolved error code 0x80040266

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

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

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

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

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

相關(guān)文章

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

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

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

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

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

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

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

    c++基礎(chǔ)算法動態(tài)DP解決CoinChange問題

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

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

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

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

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

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

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

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

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

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

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

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

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

最新評論

巴南区| 佛冈县| 宾阳县| 黔西县| 贵州省| 泸定县| 阜康市| 镇赉县| 新和县| 芜湖市| 曲阳县| 抚松县| 沧源| 大竹县| 黎平县| 江华| 鹿泉市| 金昌市| 驻马店市| 临泉县| 修水县| 湟中县| 凤台县| 甘肃省| 将乐县| 堆龙德庆县| 台南县| 磐安县| 夹江县| 永新县| 威远县| 华池县| 阿拉善右旗| 巴彦县| 团风县| 铁力市| 涟水县| 龙山县| 治多县| 棋牌| 西华县|