Qt文件閱讀筆記 Qt5錄音功能的實現

2021-09-26 16:26:14 字數 2792 閱讀 5064

目錄

基本概念

**與例項

首先是qt5中的新特性:

qt5中關於多**的新特性:

1. qml api介面;

2. 能同時使用mediaplayer和videooutput;

3. qml torch類;

4. 增加了qaudiorecorder這一新類;

5. 更加強大的qaudiooutput和qaudioinput;

6. 更多的例項和文件;

7. 把qsound類從qt cui模組移到了qt **********模組;

8. qsoundeffect不僅支援c++,還支援qml;

9. qradiodata和radiodata也能使用;

10. 優化了各種api以及修補了bug。

這裡還得記錄2個類!

qaudiorecorder提供了錄音功能,這個是高階多**錄製類,他是qmediarecorderder的子類,用法和他差不多

下面是官方的例項:

audiorecorder = new qaudiorecorder;

qaudioencodersettings audiosettings;

audiosettings.setcodec("audio/amr");

audiosettings.setquality(q**********::highquality);

audiorecorder->setencodingsettings(audiosettings);

audiorecorder->setoutputlocation(qurl::fromlocalfile("test.amr"));

audiorecorder->record();

此外qaudiorecorder還提供了選擇audioinput的功能

qstringlist inputs = audiorecorder->audioinputs();

qstring selectedinput = audiorecorder->defaultaudioinput();

foreach (qstring input, inputs)

audiorecorder->setaudioinput(selectedinput);

audio recorder example提供了這個類的詳細用法,這個其實本人的例子,就是audio recorder example的關鍵提提取出來的!!!!

下面來看另外乙個類:qaudioencodersettings

這個類提供了編碼方面的設定。

用這個類去指定qmediarecorder中相關的設定(因為qaudiorecorder為qmediarecorder的子類,所有他也可以設定),通過呼叫setaudiosettings這個函式進行設定!

官方給出的相關**!

qaudioencodersettings audiosettings;

audiosettings.setcodec("audio/mpeg");

audiosettings.setchannelcount(2);

recorder->setaudiosettings(audiosettings);

程式執行截圖如下:

錄了4-5s的時間(程式裡面是5s)

原始碼如下:

qstringlist audioinputlist = audiorecorder->audioinputs(); //audioinputlist[0]為麥克風

qstringlist audiocodecslist = audiorecorder->supportedaudiocodecs(); //audiocodecslist[0]為 audio/pcm

audiorecorder->setaudioinput(audioinputlist[0]);

qaudioencodersettings settings;

settings.setcodec(audiocodecslist[0]);

settings.setsamplerate(16000); //取樣率 ******x

settings.setbitrate(128000);

settings.setquality(q**********::encodingquality(10));

settings.setencodingmode(q**********::constantbitrateencoding);

audiorecorder->setencodingsettings(settings, qvideoencodersettings());

audiorecorder->record();

qdebug() << "start!";

qeventloop loop;

qtimer::singleshot(5 * 1000, &loop, slot(quit()));

loop.exec();

audiorecorder->stop();

delete audiorecorder;

qdebug() << "over";

return a.exec();}

QT5 學習筆記一

一 訊號和槽機制 signal slot qt提供了訊號和槽機制用於完成介面操作的響應,是完成任意兩個qt物件之間的通訊機制。訊號會在某個特定情況或動作下被觸發,槽是等同於接收並處理訊號的函式。訊號與槽機制的連線方式 1 乙個訊號可以與另乙個訊號相連 2 同乙個訊號可以與多個槽相連 3 同乙個槽可以...

QT5 學習筆記01

第乙個例項,計算圓的面積 利用qt5 designer實現 第一次例項比較簡單,掌握建立專案的方法以及槽函式的用法即可。使用到的常用函式 1 qstring toint bool ok nullptr,int base 10 第一引數為ok位址,表明轉換成功與否,第二個引數進製 123 123 2 ...

QT5 學習筆記02

第二個例項,計算圓的面積 利用 實現 建立專案時不選擇建立介面選項 建立好後專案中不含有ui designer 物件的位置用布局管理器控制 如 qgridlayout mainlayout 關於槽的相關資料 主視窗中的 如下 include dialog.h include qgridlayout ...