版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
Qt6.2/C++程序設(shè)計(jì)與桌面應(yīng)用開發(fā)21世紀(jì)高等學(xué)校計(jì)算機(jī)類課程創(chuàng)新規(guī)劃教材–微課視頻版教材目錄第1章初識(shí)Qt框架第2章Qt開發(fā)基礎(chǔ)第3章界面設(shè)計(jì)組件第4章主框架窗口第5章對(duì)話框設(shè)計(jì)第6章事件系統(tǒng)第7章文件與數(shù)據(jù)庫第8章模型/視圖結(jié)構(gòu)第9章圖形繪制第10章多媒體編程第11章網(wǎng)絡(luò)編程第12章進(jìn)程與線程教材目錄第10章多媒體編程10.1Qt多媒體簡介10.2音頻處理10.3視頻播放10.4視頻操作10.1Qt多媒體簡介Qt中的多媒體支持是由Qt的多媒體模塊(QtMultimedia)來提供的。通過Qt多媒體模塊所提供的眾多功能不同的類,應(yīng)用程序就可以輕松利用操作系統(tǒng)所提供的多媒體功能,如媒體播放和攝像設(shè)備的使用等,來實(shí)現(xiàn)應(yīng)用程序自身的多媒體功能。10.1.1Qt多媒體功能在Qt6.2中,可以實(shí)現(xiàn)的多媒體功能主要有:(1)訪問原始音頻設(shè)備進(jìn)行輸入或輸出;(2)低延遲播放音效文件,如*.wav等;(3)播放存放在播放列表中的被壓縮的音頻和視頻文件,如*.mp3、*.mp4等;(4)錄制聲音并壓制文件;(5)使用攝像設(shè)備進(jìn)行預(yù)覽、拍攝和視頻錄制;(6)將音頻文件解碼到內(nèi)存進(jìn)行處理。Qt應(yīng)用程序的多媒體功能,通過QtMultimedia和QtMultimediaWidgets兩個(gè)模塊提供的類來實(shí)現(xiàn)。要在Qt應(yīng)用程序中實(shí)現(xiàn)多媒體功能,需要在項(xiàng)目文件中添加如下語句:
Qt+=multimedia如果在項(xiàng)目中使用視頻處理功能,還需要同時(shí)加入下面的語句:
Qt+=multimediawidgets以便使用QVideoWidget
或QGraphicsVideoItem
類來進(jìn)行視頻的播放。10.1.2Qt多媒體模塊Qt的多媒體模塊是以附加模塊的形式提供的,分為QtMultimedia和QtMultimediaWidgets兩個(gè)子模塊。QtMultimedia子模塊提供了一些底層多媒體功能,比如音頻的采集和回放、頻譜分析、視頻的處理等。與Qt5相比較,Qt6.2的Multimedia模塊發(fā)生了較大的變化,其架構(gòu)及功能都得到了很好的優(yōu)化。Qt6.2的QtMultimedia模塊類及功能如下表所示。10.2音頻處理Qt對(duì)音頻的處理主要包括音頻的輸入與輸出。音頻的輸出就是將音頻輸出到音頻播放設(shè)備,播放音頻文件;音頻的輸入就是音頻數(shù)據(jù)的采集,也就是聲音的錄制操作。10.2.1相關(guān)Qt類Qt的多媒體模塊提供了一系列的音頻類,這些類提供了大量的低級(jí)和高級(jí)方法,來實(shí)現(xiàn)音頻的輸入、輸出和處理等多媒體應(yīng)用功能。這些類主要有:QAudioDevice、QMediaDevices、QaudioInput、QAudioOutput、QAudioFormat、QMediaFormat、QAudioSink、QAudioSource、QMediaPlayer、QMediaRecorder和QSoundEffect等。1、QAudioDevice類該類用于描述音頻設(shè)備,其部分成員函數(shù)及功能如表10.2所示。下面是一段簡單的示例代碼:2、QAudioOutput類該類用于描述可以與QMediaPlayer
或QMediaCaptureSession
一起使用的音頻輸出通道??梢允褂盟x擇要使用的物理輸出設(shè)備、使通道靜音或者更改通道的音量等。其部分成員函數(shù)及功能如表10.3所示。下面是一段簡單的示例代碼:構(gòu)建并運(yùn)行上述示例代碼,程序會(huì)播放audio.mp3音頻文件。注意需要將audio.mp3音頻文件放置在項(xiàng)目的構(gòu)建目錄里。3、QAudioInput類該類用于描述可以與QMediaCaptureSession
一起使用的輸入通道。它允許選擇要使用的物理輸入設(shè)備、靜音通道和更改通道的音量。QAudioInput類的成員函數(shù)及信號(hào)函數(shù)與QAudioOutput類基本類似,參見表10.3所示。下面給出一段簡單的示例代碼:構(gòu)建并運(yùn)行上述示例代碼項(xiàng)目,程序會(huì)在電腦的“音樂”目錄下生成一個(gè)名為“test.m4a”的音頻文件,用播放軟件播放該文件進(jìn)行測試。4、QAudioSource類該類用于自定義QAudioDevice
設(shè)備,其部分成員函數(shù)及功能如表10.4所示。下面是一段簡單的示例代碼:上述示例代碼運(yùn)行后,會(huì)在f:\temp子目錄中創(chuàng)建一個(gè)名為test.raw的音頻文件。5、QAudioFormat類QAudioFormat類對(duì)象用于設(shè)置音頻格式。該類有3個(gè)公有屬性,即:AudioChannelPosition、ChannelConfig和SampleFormat,分別用于表示通道位置、通道配置和采樣格式。其取值如下:10.2.2音頻播放在Qt中,音頻的播放可以使用多種方式。1、使用QSoundEffect類QSoundEffect類以低延遲方式播放未壓縮的音頻文件(通常為WAV文件);特別適用于響應(yīng)用戶操作的“反饋”類型聲音,例如虛擬鍵盤聲音、彈出對(duì)話框的正反饋或負(fù)反饋或游戲聲音等?!纠?0.1】使用QSoundEffect類播放音頻。(1)啟動(dòng)QtCreator集成開發(fā)環(huán)境,創(chuàng)建一個(gè)名為examp10_1的Qt應(yīng)用程序。程序主窗口基類設(shè)置為QWidget。(2)雙擊項(xiàng)目中的界面文件widget.ui,打開QtDesigner界面設(shè)計(jì)工具,設(shè)計(jì)如圖10.2所示的程序主窗口界面。其中,“播放”和“停止”按鈕的對(duì)象名稱分別是playBtn和stopBtn。(3)為程序主窗口中的2個(gè)按鈕添加clicked()信號(hào)槽函數(shù),分別為:
voidon_playBtn_clicked();
voidon_stopBtn_clicked();(4)打開項(xiàng)目文件examp10_1.pro,添加如下代碼,將Qt的多媒體模塊引入到項(xiàng)目中。
QT+=multimedia(5)打開widget.h文件,添加一個(gè)名為effect的QSoundEffect對(duì)象指針,并添加QSoundEffect類的前導(dǎo)聲明。代碼如下陰影部分所示。(6)打開widget.cpp文件,在Widget類的構(gòu)造函數(shù)中添加如下代碼。(7)在按鈕的槽函數(shù)中添加代碼,如下所示。(8)構(gòu)建并運(yùn)行程序。2、使用QAudioSink類QAudioSink類提供了一個(gè)接口,用于將音頻數(shù)據(jù)發(fā)送到音頻輸出設(shè)備。其部分成員函數(shù)及功能如表10.7所示?!纠?0.2】使用QAudioSink類播放音頻。(1)啟動(dòng)QtCreator集成開發(fā)環(huán)境,創(chuàng)建一個(gè)名為examp10_2的Qt應(yīng)用程序。程序主窗口基類設(shè)置為QWidget。(2)雙擊項(xiàng)目中的界面文件widget.ui,打開QtDesigner界面設(shè)計(jì)工具,設(shè)計(jì)如圖10.3所示的程序主窗口界面。(3)打開項(xiàng)目文件examp10_2.pro,添加如下代碼,將Qt的多媒體模塊引入到項(xiàng)目中。
QT+=multimedia(4)在widget.h文件中添加代碼,聲明Widget類的成員變量及成員函數(shù)。下面是部分代碼。(5)在widget.cpp文件中添加代碼,實(shí)現(xiàn)程序功能。下面是部分代碼。(6)構(gòu)建并運(yùn)行程序。3、使用QMediaPlayer類QMediaPlayer類用于播放媒體文件,包括音頻與視頻。該類是一個(gè)高級(jí)媒體播放類,可以使用它來播放視頻媒體文件中的音頻。其部分成員函數(shù)及功能如表10.8所示?!纠?0.3】使用QMediaPlayer類播放音頻。(1)啟動(dòng)QtCreator集成開發(fā)環(huán)境,創(chuàng)建一個(gè)名為examp10_3的Qt應(yīng)用程序。程序主窗口基類設(shè)置為QWidget。(2)雙擊項(xiàng)目中的界面文件widget.ui,打開QtDesigner界面設(shè)計(jì)工具,設(shè)計(jì)如圖10.5所示的程序主窗口界面。(3)打開項(xiàng)目文件examp10_3.pro,添加如下代碼,將Qt的多媒體模塊引入到項(xiàng)目中。QT+=multimedia(4)在widget.h文件中添加代碼,聲明Widget類的成員變量及成員函數(shù)。下面是部分代碼。(5)在widget.cpp文件中添加代碼,實(shí)現(xiàn)程序功能。下面是部分代碼。(6)構(gòu)建并運(yùn)行程序。10.2.3音頻輸入在Qt中,音頻輸入一般使用QMediaRecorder類來實(shí)現(xiàn)。QMediaRecorder類是高層次的實(shí)現(xiàn),輸入的音頻數(shù)據(jù)直接保存為文件。QMediaRecorder類
是用于編碼和記錄QMediaCaptureSession
中生成的媒體數(shù)據(jù)的類??梢詫?shí)現(xiàn)音頻的錄制。其部分成員函數(shù)及功能如表10.9所示?!纠?0.4】示例QMediaRecorder類的簡單使用。(1)啟動(dòng)QtCreator集成開發(fā)環(huán)境,創(chuàng)建一個(gè)名為examp10_4的Qt應(yīng)用程序。程序主窗口基類設(shè)置為QWidget。(2)雙擊項(xiàng)目中的界面文件widget.ui,打開QtDesigner界面設(shè)計(jì)工具,設(shè)計(jì)如圖10.6所示的程序主窗口界面。其中“錄音”和“暫?!卑粹o為QPushButton對(duì)象,對(duì)象名分別為recordButton和pauseButton。(3)打開項(xiàng)目文件examp10_4.pro,添加如下代碼,將Qt的多媒體模塊引入到項(xiàng)目中。QT+=multimedia(4)在widget.h文件中添加代碼,聲明Widget類的成員變量及成員函數(shù)。下面是部分代碼。(5)在widget.cpp文件中添加代碼,實(shí)現(xiàn)程序功能。下面是部分代碼。(6)構(gòu)建并運(yùn)行程序。10.3視頻播放在Qt中播放視頻一般使用QMediaPlayer類來完成,該類可以進(jìn)行視頻文件的解碼。Qt提供了QVideoWidget和QGraphicsVideoItem
兩種視頻顯示組件。也可以從這兩個(gè)類繼承,來自定義個(gè)性化的視頻顯示組件。10.3.1相關(guān)Qt類QtMultimedia模塊提供了用于播放和操作視頻數(shù)據(jù)的高級(jí)和低級(jí)C++類,主要有:QMediaCaptureSession、QMediaPlayer、QMediaRecorder、QVideoFrame、QVideoFrameFormat、QVideoSink和QVideoWidget
等。視頻播放涉及到媒體播放器QMediaPlayer類,以及顯示組件類QVideoWidget
和QGraphicsVideoItem1、QVideoWidget類QVideoWidget類是一個(gè)用于顯示媒體對(duì)象生成視頻或圖像的界面組件,若將其附加到QMediaPlayer或QCamera對(duì)象上,可以顯示這些媒體對(duì)象生成的視頻或圖像。該類包含在QtMultimediaWidgets模塊內(nèi),使用時(shí)需要在項(xiàng)目的配置文件中添加如下語句:
QT+=multimediawidgets將其加載到項(xiàng)目中。QVideoWidget類繼承自QWidget,擁有眾多的屬性及函數(shù)。與其父類QWidget相比較,該類增加了2個(gè)屬性,它們是:Qt::AspectRatioModeaspectRatioMode;和boolfullScreen;其中,aspectRatioMode表示屏幕的縱橫比;fullScreen表示全屏屬性。與上述2個(gè)新增屬性相對(duì)應(yīng),添加了2個(gè)公有成員函數(shù),如下所示:Qt::AspectRatioModeaspectRatioMode()constboolisFullScreen()const分別用于獲取屏幕縱橫比和判斷是否全屏。與2個(gè)新增屬性相對(duì)應(yīng),又添加了2個(gè)信號(hào)函數(shù):voidaspectRatioModeChanged(Qt::AspectRatioModemode)voidfullScreenChanged(boolfullScreen)前者當(dāng)屏幕縱橫比發(fā)生變化時(shí)發(fā)射,后者當(dāng)全屏狀態(tài)發(fā)生改變時(shí)發(fā)射。QVideoWidget類的使用非常簡單,只需要將其對(duì)象與媒體播放器關(guān)聯(lián),并顯示組件即可。下面是一段示例代碼。2、QGraphicsVideoItem類QGraphicsVideoItem類提供一個(gè)圖形項(xiàng),用于顯示QMediaPlayer或Qcamera生成的視頻。該類繼承自QGraphicsObject類,是適用于Graphics/View(圖形/視圖)模式的圖形顯示組件。在使用QGraphicsVideoItem顯示視頻時(shí),可以在顯示場景中和其他圖形組件同時(shí)顯示,也可以使用該類的放大、縮小、拖動(dòng)和旋轉(zhuǎn)等功能。QGraphicsVideoItem類的繼承關(guān)系如下圖所示:10.3.2視頻播放在Qt應(yīng)用程序中播放視頻非常容易,只需要將媒體播放器對(duì)象與視頻顯示組件進(jìn)行關(guān)聯(lián)即可。1、使用QVideoWidget顯示組件下面的實(shí)例使用QMediaPlayer和QVideoWidget實(shí)現(xiàn)視頻的播放。【例10.5】編寫一個(gè)Qt應(yīng)用程序,示例在QVideoWidget
上播放視頻。(1)啟動(dòng)QtCreator集成開發(fā)環(huán)境,創(chuàng)建一個(gè)名為examp10_5的Qt應(yīng)用程序。程序主窗口基類設(shè)置為QWidget。(2)雙擊項(xiàng)目中的界面文件widget.ui,打開QtDesigner界面設(shè)計(jì)工具,設(shè)計(jì)如上圖所示的程序主窗口界面。(3)打開項(xiàng)目文件examp10_5.pro,添加如下代碼,將Qt的多媒體模塊引入到項(xiàng)目中。QT+=multimediaQT+=multimediawidgets(4)在widget.h文件中添加代碼,聲明Widget類的成員變量及成員函數(shù)。下面是部分代碼。(5)在widget.cpp文件中添加代碼,實(shí)現(xiàn)程序功能。下面是部分代碼。(6)構(gòu)建并運(yùn)行程序。2、使用QGraphicsVideoItem顯示組件下面的實(shí)例使用QMediaPlayer
和QGraphicsVideoItem
實(shí)現(xiàn)視頻的播放?!纠?0.6】編寫程序,示例在QGraphicsVideoItem
上播放視頻。(1)啟動(dòng)QtCreator集成開發(fā)環(huán)境,創(chuàng)建一個(gè)名為examp10_6的Qt應(yīng)用程序。程序主窗口基類設(shè)置為QWidget。(2)雙擊項(xiàng)目中的界面文件widget.ui,打開QtDesigner界面設(shè)計(jì)工具,設(shè)計(jì)如圖10.10所示的程序主窗口界面。(3)打開項(xiàng)目文件examp10_6.pro,添加如下代碼,將Qt的多媒體模塊引入到項(xiàng)目中。QT+=multimediaQT+=multimediawidgets(4)在widget.h文件中添加代碼,聲明Widget類的成員變量及成員函數(shù)。下面是部分代碼。(5)在widget.cpp文件中添加代碼,實(shí)現(xiàn)程序功能。下面是部分代碼。(6)構(gòu)建并運(yùn)行程序。QtMultimedia模塊提供了幾個(gè)用于控制照相設(shè)備的類,通過它們可以進(jìn)行照相設(shè)備信息的獲取、靜態(tài)圖像的拍攝以及視頻的錄制等操作。10.4視頻操作10.4.1相關(guān)Qt類在Qt中對(duì)照相設(shè)備操作涉及到很多的類,其中主要有:QCamera、QCameraDevice、QCameraFormat、QImageCapture、QMediaCaptureSession
和QMediaRecorder等這些類的功能如表10.1所示。1、QCamera類QCamera類為系統(tǒng)的照相(或攝像)設(shè)備提供接口,可以在QMediaCaptureSession中用于視頻的錄制和圖像的拍攝。其部分成員函數(shù)及功能如表10.10所示。下面是一段QCamera類應(yīng)用的簡單示例代碼:2、QCameraDevice類QCamera是用來控制照相設(shè)備的類,而照相設(shè)備的相關(guān)信息則是用QCameraDevice類來表示的。QCameraDevice
表示物理相機(jī)設(shè)備及其屬性。QCameraDevice類的部分成員函數(shù)及功能如表10.12所示。下面是幾個(gè)使用QCameraDevice類的示例代碼片斷:3、QCameraFormat類QCameraFormat類用于描述相機(jī)設(shè)備所支持的視頻格式。包括像素格式、分辨率和幀速率范圍??梢詮腝CameraDevice
查詢QCameraFormat
對(duì)象,從而獲取支持的視頻格式集。QCameraFormat類的部分成員函數(shù)及功能如表10.13所示。4、QImageCapture類QImageCapture類用于錄制媒體內(nèi)容。該類是一個(gè)高級(jí)圖像錄制類,一般不單獨(dú)使用,而是用于訪問其他媒體對(duì)象(如QCamera)的媒體錄制功能QImageCapture類的部分成員函數(shù)及功能如表10.14所示。10.4.2設(shè)備查詢系統(tǒng)中的照相(或攝像)設(shè)備是用QCameraDevice類的對(duì)象來表示的。若要查詢照相設(shè)備的相關(guān)信息,只需要使用QCameraDevice類的對(duì)象調(diào)用其成員函數(shù)即可。下面是一段查詢照相設(shè)備信息的示例代碼:10.4
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 大頭針制造機(jī)產(chǎn)業(yè)鏈招商引資的調(diào)研報(bào)告
- 特教生口語突破-探索有效訓(xùn)練方法
- 芯片集成電路產(chǎn)品供應(yīng)鏈分析
- 剃須凝膠產(chǎn)品供應(yīng)鏈分析
- 5G智能物流行業(yè)相關(guān)項(xiàng)目經(jīng)營管理報(bào)告
- 商業(yè)戰(zhàn)略規(guī)劃服務(wù)行業(yè)相關(guān)項(xiàng)目經(jīng)營管理報(bào)告
- 制藥廢水處理行業(yè)營銷策略方案
- 電子教學(xué)學(xué)習(xí)機(jī)商業(yè)機(jī)會(huì)挖掘與戰(zhàn)略布局策略研究報(bào)告
- 表盤項(xiàng)目營銷計(jì)劃書
- 美甲凝膠項(xiàng)目運(yùn)營指導(dǎo)方案
- 反恐防暴課件教學(xué)課件
- 污泥(廢水)運(yùn)輸服務(wù)方案(技術(shù)方案)
- 水墨探索 課件 2024-2025學(xué)年嶺美版初中美術(shù)八年級(jí)上冊
- 山西省運(yùn)城市2024-2025學(xué)年高二上學(xué)期10月月考語文試題
- 20世紀(jì)外國文學(xué)史課件:“垮掉的一代”
- 2024年高考英語模擬卷1全解全析(北京專用)
- 2024至2030年中國有機(jī)硅行業(yè)市場深度分析及發(fā)展趨勢預(yù)測報(bào)告
- 部編人教版二年級(jí)道德與法治上冊全冊教學(xué)設(shè)計(jì)(含反思)
- 中煤電力有限公司招聘筆試題庫2024
- 河北省石家莊市第四十四中學(xué)2022-2023學(xué)年八下期中數(shù)學(xué)試卷
- 初中語文修改病句市公開課一等獎(jiǎng)省賽課獲獎(jiǎng)?wù)n件
評(píng)論
0/150
提交評(píng)論