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

Qt音視頻功能實(shí)現(xiàn)方法詳解

 更新時(shí)間:2024年09月06日 08:52:28   作者:YoungMLet  
音視頻應(yīng)用往往需要大量的計(jì)算資源,尤其是在處理高分辨率、高碼率的音視頻數(shù)據(jù)時(shí),這篇文章主要給大家介紹了關(guān)于Qt音視頻功能實(shí)現(xiàn)方法的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

Qt 音視頻

在 Qt 中,音頻主要是通過 QSound 類來實(shí)現(xiàn)。但是需要注意的是 QSound 類只支持播放 wav 格式的音頻文件。也就是說如果想要添加音頻效果,那么首先需要將非 wav 格式的音頻文件轉(zhuǎn)換為 wav 格式。

通過幫助手冊查看 QSound 類如下:

注意:使用 QSound 類時(shí),需要添加模塊:multimedia

1. Qt 音頻

核心 API :

				play() 開始或繼續(xù)播放當(dāng)前源

示例代碼:

1、首先在 .pro 文件中加入模塊:

2、界面如下:

3、引入聲音文件:

4、widget.cpp 文件如下:

			#include <QSound>
			
			Widget::Widget(QWidget *parent)
			    : QWidget(parent)
			    , ui(new Ui::Widget)
			{
			    ui->setupUi(this);
			
			    // 實(shí)例化對象
			    QSound* sound = new QSound(":/sound.wav", this);
			
			    connect(ui->pushButton, &QPushButton::clicked, [=](){
			        sound->play();  // 播放
			    });
			}

2. Qt 視頻

在 Qt 中,視頻播放的功能主要是通過 QMediaPlayer 類和 QVideoWidget 類來實(shí)現(xiàn)。在使用這兩個(gè)類時(shí)要添加對應(yīng)的模塊 multimedia 和 multimediawidgets.

核心 API:

            setMedia() 設(shè)置當(dāng)前媒體源。
            setVideoOutput() 將QVideoWidget視頻輸出附加到媒體播放器。如果媒體播放器已經(jīng)附加了視頻輸出,將更換?個(gè)新的。

示例代碼:

1、首先在 .pro 文件中添加模塊:

2、widget.h 程序如下:

			#include <QWidget>
			#include <QHBoxLayout>  // 水平布局
			#include <QVBoxLayout>  // 垂直布局
			#include <QVideoWidget> // 顯示視頻
			#include <QMediaPlayer> // 播放聲音
			#include <QPushButton>  // 按鈕
			#include <QStyle>       // 設(shè)置圖標(biāo)
			#include <QFileDialog>  // 選擇文件/文件夾
			
			QT_BEGIN_NAMESPACE
			namespace Ui { class Widget; }
			QT_END_NAMESPACE
			
			class Widget : public QWidget
			{
			    Q_OBJECT
			
			public:
			    Widget(QWidget *parent = nullptr);
			    ~Widget();
			    
			public slots:
			    void closeVideo();
			
			private:
			    QMediaPlayer* mediaPlayer;
			    QVideoWidget* videoWidget;
			    QVBoxLayout* vbox;
			    
			    // 創(chuàng)建兩個(gè)按鈕:選擇視頻按鈕和開播放按鈕
			    QPushButton* chooseBtn, *playBtn;
			
			private:
			    Ui::Widget *ui;
			};

3、widget.cpp 程序如下:

			#include <QMediaPlayer>
			#include <QSlider>
			
			Widget::Widget(QWidget *parent)
			    : QWidget(parent)
			{
			    // 對象實(shí)例化
			    mediaPlayer = new QMediaPlayer(this);
			    videoWidget = new QVideoWidget(this);
			
			    // 設(shè)置播放畫面的窗口
			    videoWidget->setMinimumSize(600, 600);
			
			    // 實(shí)例化窗口布局 --- 垂直布局
			    this->vbox = new QVBoxLayout(this);
			    this->setLayout(this->vbox);
			
			    // 實(shí)例化選擇視頻按鈕
			    chooseBtn = new QPushButton("選擇視頻", this);
			
			    // 實(shí)例化播放按鈕
			    playBtn = new QPushButton(this);
			
			    // 設(shè)置圖標(biāo)代替文件
			    playBtn->setIcon(this->style()->standardIcon(QStyle::SP_MediaPlay));
			
			    // 實(shí)例化一個(gè)水平布局,將以上控件放入水平布局中
			    QHBoxLayout* hbox = new QHBoxLayout;
			
			    // 添加控件
			    hbox->addWidget(chooseBtn);
			    hbox->addWidget(playBtn);
			
			    // 將播放窗口和水平布局都添加到垂直布局中
			    vbox->addWidget(videoWidget);
			
			    // 布局中添加布局
			    vbox->addLayout(hbox);
			
			    // 將選擇視頻對應(yīng)的按鈕和槽函數(shù)進(jìn)行關(guān)聯(lián)
			    connect(chooseBtn, &QPushButton::clicked, this, &Widget::chooseVideo);
			}
			
			void Widget::chooseVideo()
			{
			    // 選擇視頻,返回一個(gè)播放視頻的名字
			    QString name = QFileDialog::getSaveFileName(this, "選擇視頻", ".", "WMV(*.wmv)");
			
			    // 設(shè)置媒體聲音
			    mediaPlayer->setMedia(QUrl(name));
			
			    // 輸出視頻畫面
			    mediaPlayer->setVideoOutput(videoWidget);
			
			    // 播放
			    mediaPlayer->play();
			}

總結(jié) 

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

相關(guān)文章

  • C++調(diào)用libcurl開源庫實(shí)現(xiàn)郵件的發(fā)送功能流程詳解

    C++調(diào)用libcurl開源庫實(shí)現(xiàn)郵件的發(fā)送功能流程詳解

    libcurl是一個(gè)免費(fèi)開源的網(wǎng)絡(luò)傳輸庫,支持ftp、ftps、tftp,http、https、telnet、ldap、pop3、smtp等多種協(xié)議,接下來讓我們一起來了解吧
    2021-11-11
  • C語言單鏈表常見操作匯總

    C語言單鏈表常見操作匯總

    這篇文章主要介紹了C語言單鏈表常見操作,需要的朋友可以參考下
    2014-07-07
  • C++17中std::string_view的使用

    C++17中std::string_view的使用

    std::string_view是C++17標(biāo)準(zhǔn)庫中的一種新類型,它提供了對一個(gè)字符序列的非擁有式視圖,本文主要介紹了C++17中std::string_view的使用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • C++ 二維數(shù)組傳參的四種方式

    C++ 二維數(shù)組傳參的四種方式

    C++的二維數(shù)組里面,通過用數(shù)組名傳參,傳過去后數(shù)組名會退化成一個(gè)一維數(shù)組指針,所以C++的函數(shù)參數(shù)不能像C語言一樣去寫,本文主要介紹了C++ 二維數(shù)組傳參的四種方式,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-04-04
  • C語言進(jìn)階之字符串查找?guī)旌瘮?shù)詳解

    C語言進(jìn)階之字符串查找?guī)旌瘮?shù)詳解

    字符串是一種非常重要的數(shù)據(jù)類型,但是C語言不存在顯式的字符串類型,C語言中的字符串都以字符串常量的形式出現(xiàn)或存儲在字符數(shù)組中,下面這篇文章主要給大家介紹了關(guān)于C語言進(jìn)階之字符串查找?guī)旌瘮?shù)的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • C語言實(shí)現(xiàn)字符串轉(zhuǎn)浮點(diǎn)函數(shù)的示例

    C語言實(shí)現(xiàn)字符串轉(zhuǎn)浮點(diǎn)函數(shù)的示例

    字符串不僅可以轉(zhuǎn)換為整數(shù),也可以轉(zhuǎn)換為浮點(diǎn)數(shù),本文主要介紹了C語言實(shí)現(xiàn)字符串轉(zhuǎn)浮點(diǎn)函數(shù)的示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2022-02-02
  • 基于排列與組合輸出多少中情況詳解

    基于排列與組合輸出多少中情況詳解

    本篇文章對排列與組合輸出多少中情況進(jìn)行了介紹。需要的朋友參考下
    2013-05-05
  • C++引用的詳細(xì)解釋

    C++引用的詳細(xì)解釋

    以下是對C++中引用的使用進(jìn)行了詳細(xì)的總結(jié)介紹,需要的朋友可以過來參考下,希望對大家有所幫助,希望能夠給你帶來幫助
    2021-11-11
  • c++結(jié)構(gòu)體用memcpy賦值問題

    c++結(jié)構(gòu)體用memcpy賦值問題

    本文總結(jié)了在C++中使用memcpy對結(jié)構(gòu)體賦值時(shí)需要考慮的問題,包括POD類型、虛函數(shù)、非POD成員、自定義構(gòu)造/析構(gòu)函數(shù)以及指針成員等,具有一定的參考價(jià)值,感興趣的可以了解一下
    2026-01-01
  • C語言的基本語法詳解

    C語言的基本語法詳解

    本篇文章主要講解C語言 基本語法,這里提供簡單的示例和代碼來詳細(xì)講解C語言的基本語法,開始學(xué)習(xí)C語言的朋友可以看一下,希望能夠給你帶來幫助
    2021-09-09

最新評論

安新县| 满洲里市| 嫩江县| 广宗县| 铜山县| 台北市| 庄河市| 疏附县| 巨野县| 福鼎市| 武川县| 出国| 措勤县| 绥德县| 抚宁县| 梁山县| 涟源市| 洛浦县| 昌江| 平山县| 郸城县| 罗定市| 凤冈县| 三江| 芮城县| 汕尾市| 横峰县| 肥西县| 永丰县| 嘉祥县| 柞水县| 绥德县| 舟山市| 淮北市| 鸡泽县| 偃师市| 朔州市| 嘉定区| 名山县| 扶绥县| 新野县|