欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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語言實(shí)現(xiàn)BMP圖像的讀寫功能

    C語言實(shí)現(xiàn)BMP圖像的讀寫功能

    這篇文章主要介紹了C語言實(shí)現(xiàn)BMP圖像的讀寫功能,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • C語言中位域的使用詳解

    C語言中位域的使用詳解

    位域是C語言中的一種高級功能,允許程序員為結(jié)構(gòu)體的成員分配特定數(shù)量的位,本文主要為大家介紹了位域的使用以及優(yōu)缺點(diǎn),希望對大家有所幫助
    2023-07-07
  • C++智能指針之shared_ptr詳解

    C++智能指針之shared_ptr詳解

    這篇文章主要為大家詳細(xì)介紹了C++智能指針之shared_ptr,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • C語言用函數(shù)實(shí)現(xiàn)反彈球消磚塊

    C語言用函數(shù)實(shí)現(xiàn)反彈球消磚塊

    這篇文章主要為大家詳細(xì)介紹了C語言用函數(shù)實(shí)現(xiàn)反彈球消磚塊,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • C語言高效編程的幾招小技巧

    C語言高效編程的幾招小技巧

    這篇文章主要介紹了C語言高效編程的幾招小技巧,本文講解了以空間換時(shí)間、用數(shù)學(xué)方法解決問題以及使用位操作等編輯技巧,并給出若干方法和代碼實(shí)例,需要的朋友可以參考下
    2015-05-05
  • C++中關(guān)鍵字const的詳細(xì)說明和使用介紹(最全)

    C++中關(guān)鍵字const的詳細(xì)說明和使用介紹(最全)

    const在C/C++中是十分重要的,如果單純理解為“常量”那么你的格局就小了,今天在這里給大家介紹一下const在C++中具體詳細(xì)的用法,需要的朋友可以參考下
    2025-03-03
  • C++從匯編的視角審視對象的創(chuàng)建問題

    C++從匯編的視角審視對象的創(chuàng)建問題

    這篇文章主要介紹了C++從匯編的視角看對象的創(chuàng)建,從匯編的視角來看,調(diào)用構(gòu)造器和調(diào)用 “返回對象” 的函數(shù)是一樣的,從匯編的角度來看,對象就是一堆數(shù)據(jù)的排列,比如說最普通的對象就是數(shù)據(jù)成員按照聲明順序直接排列,需要的朋友可以參考下
    2022-01-01
  • c語言如何輸出一個(gè)n行m列的圖形

    c語言如何輸出一個(gè)n行m列的圖形

    這篇文章主要介紹了c語言如何輸出一個(gè)n行m列的圖形問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • OpenCV實(shí)現(xiàn)馬賽克功能

    OpenCV實(shí)現(xiàn)馬賽克功能

    這篇文章主要為大家詳細(xì)介紹了OpenCV實(shí)現(xiàn)馬賽克功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • C語言中fgetgrent()函數(shù)和fgetpwent()函數(shù)的用法對比

    C語言中fgetgrent()函數(shù)和fgetpwent()函數(shù)的用法對比

    這篇文章主要介紹了C語言中fgetgrent()函數(shù)和fgetpwent()函數(shù)的用法對比,分別用于讀取組格式函數(shù)和讀取密碼格式,需要的朋友可以參考下
    2015-08-08

最新評論