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

Qt下調(diào)用vlc庫(kù)實(shí)現(xiàn)RTSP拉流播放和截圖過(guò)程詳解

 更新時(shí)間:2023年08月24日 10:28:13   作者:coder_Alaric  
這篇文章主要為大家介紹了Qt下調(diào)用vlc庫(kù)實(shí)現(xiàn)RTSP拉流播放和截圖過(guò)程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

1、介紹

使用VLC-Qt庫(kù)實(shí)現(xiàn)拉流播放器基本功能,包括拉流、播放、暫停、截圖等功能。

VLC-Qt庫(kù):一個(gè)對(duì)libVLC庫(kù)基礎(chǔ)上封裝的開(kāi)源庫(kù);

推拉流服務(wù)器:ZLMediaKitde的MediaServer;

推流工具:ffmpeg

VLC-Qt官網(wǎng): VLC-Qt (tano.si)

Github地址:VLC-Qt (github.com)

2、下載/配置VLC-Qt庫(kù)

進(jìn)入VLC-Qt官網(wǎng),按照自己的編譯環(huán)境,下載對(duì)應(yīng)的庫(kù)和頭文件,也可以去github倉(cāng)庫(kù)下載源碼自己編譯

我這里用的是MSVC64位,下載后庫(kù)包括動(dòng)態(tài)庫(kù)、靜態(tài)庫(kù)和頭文件

新建一個(gè)Qt的工程,添加第三方庫(kù),或直接在pro文件中配置以下:

LIBS += -L$$PWD/libVLC/lib/ -lVLCQtCore -lVLCQtWidgets
INCLUDEPATH += $$PWD/libVLC/include
DEPENDPATH += $$PWD/libVLC/include

3、設(shè)置視頻播放控件

因?yàn)樵趌ibvlc中需要自己獲取控件的HWND句柄,并將播放綁定在控件句柄上,VLC-Qt直接封裝了這個(gè)函數(shù)并直接賦值控件,不過(guò)控件需要升級(jí)到VlcWidgetVideo的類(lèi)。

我們?cè)賣(mài)i上選擇一個(gè)widget的控件,右鍵升級(jí)

4、主要實(shí)現(xiàn)代碼

在main中要設(shè)置Vlc的Plugin,主要是依賴(lài)的插件

#include "widget.h"
#include <QApplication>
#include "VLCQtCore/Common.h"
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    VlcCommon::setPluginPath(a.applicationDirPath() + "/plugins");
    Widget w;
    w.show();
    return a.exec();
}
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include "VLCQtCore/Common.h"
#include "VLCQtCore/Instance.h"
#include "VLCQtCore/Media.h"
#include "VLCQtCore/MediaPlayer.h"
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
    Q_OBJECT
public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
private slots:
    void on_btn_startPlay_clicked();
    void on_btn_pause_clicked(bool checked);
    void on_btn_stop_clicked();
    void on_btn_snap_clicked();
private:
    Ui::Widget *ui;
    VlcInstance * inst;
    VlcMediaPlayer *vlcPlayer;
    VlcMedia *vlcMedia;
};
#endif // WIDGET_H
widget.cpp
#pragma execution_character_set("utf-8")
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    ui->btn_snap->setEnabled(false);
    inst = new VlcInstance(VlcCommon::args(), this);
    vlcPlayer = new VlcMediaPlayer(inst);
    vlcPlayer->setVideoWidget(ui->widget_video);
}
Widget::~Widget()
{
    delete ui;
}
void Widget::on_btn_startPlay_clicked()
{
    QString rtspUrl = ui->edt_rtspUrl->text();
    if(!rtspUrl.isEmpty())
    {
        vlcMedia = new VlcMedia(rtspUrl, inst);
        vlcPlayer->open(vlcMedia);
        ui->btn_snap->setEnabled(true);
    }
}
void Widget::on_btn_pause_clicked(bool checked)
{
    if(checked)
    {
        ui->btn_pause->setText("繼續(xù)");
    }
    else
    {
        ui->btn_pause->setText("暫停");
    }
    vlcPlayer->togglePause();
}
void Widget::on_btn_stop_clicked()
{
    vlcPlayer->stop();
    ui->btn_snap->setEnabled(false);
}
void Widget::on_btn_snap_clicked()
{
    emit vlcPlayer->snapshotTaken("E:/123.jpg");
}

5、效果展示

源碼 https://gitee.com/Damion_Learning/QtHalcon_LearningRecord/tree/master/printTest

以上就是Qt下調(diào)用vlc庫(kù)實(shí)現(xiàn)RTSP拉流播放和截圖過(guò)程詳解的詳細(xì)內(nèi)容,更多關(guān)于Qt調(diào)用vlc庫(kù) RTSP拉流播放截圖的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 基于C語(yǔ)言中段錯(cuò)誤的問(wèn)題詳解

    基于C語(yǔ)言中段錯(cuò)誤的問(wèn)題詳解

    本篇文章是對(duì)C語(yǔ)言中段錯(cuò)誤的問(wèn)題進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C++實(shí)現(xiàn)查找二叉樹(shù)中和為某一值的所有路徑的示例

    C++實(shí)現(xiàn)查找二叉樹(shù)中和為某一值的所有路徑的示例

    這篇文章主要介紹了C++實(shí)現(xiàn)查找二叉樹(shù)中和為某一值的所有路徑的示例,文中的方法是根據(jù)數(shù)組生成二叉排序樹(shù)并進(jìn)行遍歷,需要的朋友可以參考下
    2016-02-02
  • C語(yǔ)言實(shí)現(xiàn)查詢(xún)自動(dòng)售貨機(jī)中的商品價(jià)格【實(shí)例分享】

    C語(yǔ)言實(shí)現(xiàn)查詢(xún)自動(dòng)售貨機(jī)中的商品價(jià)格【實(shí)例分享】

    本文主要介紹了C語(yǔ)言實(shí)現(xiàn)查詢(xún)自動(dòng)售貨機(jī)中的商品價(jià)格的相關(guān)資料。具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧
    2017-04-04
  • C++簡(jiǎn)單實(shí)現(xiàn)的全排列算法示例

    C++簡(jiǎn)單實(shí)現(xiàn)的全排列算法示例

    這篇文章主要介紹了C++簡(jiǎn)單實(shí)現(xiàn)的全排列算法,結(jié)合實(shí)例形式分析了C++排序操作的實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-07-07
  • 深入淺出理解C語(yǔ)言初識(shí)結(jié)構(gòu)體

    深入淺出理解C語(yǔ)言初識(shí)結(jié)構(gòu)體

    C?數(shù)組允許定義可存儲(chǔ)相同類(lèi)型數(shù)據(jù)項(xiàng)的變量,結(jié)構(gòu)是?C?編程中另一種用戶自定義的可用的數(shù)據(jù)類(lèi)型,它允許你存儲(chǔ)不同類(lèi)型的數(shù)據(jù)項(xiàng),本篇讓我們來(lái)了解C?的結(jié)構(gòu)體
    2022-02-02
  • Qt 中 isHidden 和 isVisible 的區(qū)別與使用小結(jié)

    Qt 中 isHidden 和 isVisible 的區(qū)別與使用小結(jié)

    Qt 中的 isHidden() 和 isVisible() 方法都用于查詢(xún)組件顯示或隱藏狀態(tài),然而,它們有很大的區(qū)別,了解它們對(duì)于正確操作組件致關(guān)重要,下面給大家介紹Qt 中 isHidden 和 isVisible 的區(qū)別與使用,感興趣的朋友一起看看吧
    2025-03-03
  • 微軟Detours Hook庫(kù)編譯與使用教程

    微軟Detours Hook庫(kù)編譯與使用教程

    Detours 是一個(gè)兼容多個(gè)Windows系列操作系統(tǒng)版本(包括 Windows XP 到 Windows 11)的工具庫(kù),Detours 是微軟開(kāi)發(fā)的一個(gè)強(qiáng)大的Windows API鉤子庫(kù),用于監(jiān)視和攔截函數(shù)調(diào)用,這篇文章給大家介紹微軟Detours Hook庫(kù)編譯與使用,感興趣的朋友一起看看吧
    2024-08-08
  • C++實(shí)現(xiàn)LeetCode(146.近最少使用頁(yè)面置換緩存器)

    C++實(shí)現(xiàn)LeetCode(146.近最少使用頁(yè)面置換緩存器)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(146.近最少使用頁(yè)面置換緩存器),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C++11中std::future的具體使用方法

    C++11中std::future的具體使用方法

    這篇文章主要介紹了C++11中std::future的具體使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • C語(yǔ)言詳細(xì)分析講解多文件的程序設(shè)計(jì)

    C語(yǔ)言詳細(xì)分析講解多文件的程序設(shè)計(jì)

    所謂的C語(yǔ)言多文件編程就是,將代碼實(shí)現(xiàn)模塊化。比如說(shuō)一個(gè)項(xiàng)目的一項(xiàng)功能放在一個(gè)一個(gè)文件里,然后將實(shí)現(xiàn)這個(gè)功能的函數(shù)放在一個(gè)c文件<BR>
    2022-04-04

最新評(píng)論