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

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

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

1、介紹

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

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

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

推流工具:ffmpeg

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

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

2、下載/配置VLC-Qt庫

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

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

新建一個(gè)Qt的工程,添加第三方庫,或直接在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ù)并直接賦值控件,不過控件需要升級到VlcWidgetVideo的類。

我們再ui上選擇一個(gè)widget的控件,右鍵升級

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

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

#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庫實(shí)現(xiàn)RTSP拉流播放和截圖過程詳解的詳細(xì)內(nèi)容,更多關(guān)于Qt調(diào)用vlc庫 RTSP拉流播放截圖的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C++左值和右值學(xué)習(xí)筆記

    C++左值和右值學(xué)習(xí)筆記

    這篇文章主要為大家介紹了C++左值和右值學(xué)習(xí)筆記的重點(diǎn)講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-10-10
  • C++ 壓縮文件及文件夾方法 使用zlib開源庫

    C++ 壓縮文件及文件夾方法 使用zlib開源庫

    下面小編就為大家分享一篇C++ 壓縮文件及文件夾方法 使用zlib開源庫,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • C++共享智能指針shared_ptr的實(shí)現(xiàn)

    C++共享智能指針shared_ptr的實(shí)現(xiàn)

    在C++中沒有垃圾回收機(jī)制,必須自己釋放分配的內(nèi)存,否則就會(huì)造成內(nèi)存泄露,解決這個(gè)問題最有效的方法是使用智能指針,本文主要介紹了C++共享智能指針shared_ptr的實(shí)現(xiàn),感興趣的可以了解一下
    2023-12-12
  • C++實(shí)現(xiàn)LeetCode(162.求數(shù)組的局部峰值)

    C++實(shí)現(xiàn)LeetCode(162.求數(shù)組的局部峰值)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(162.求數(shù)組的局部峰值),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • 養(yǎng)成良好的C++編程習(xí)慣之內(nèi)存管理的應(yīng)用詳解

    養(yǎng)成良好的C++編程習(xí)慣之內(nèi)存管理的應(yīng)用詳解

    "養(yǎng)成良好的編程習(xí)慣"其實(shí)是相當(dāng)綜合的一個(gè)命題,可以從多個(gè)角度、維度和層次進(jìn)行論述和評判,如代碼的風(fēng)格、效率和可讀性;模塊設(shè)計(jì)的靈活性、可擴(kuò)展性和耦合度等等,要試圖把所有方面都闡述清楚必須花很多的精力,而且也不一定能闡述得全面
    2013-05-05
  • C++?拷貝構(gòu)造函數(shù)與賦值的區(qū)別

    C++?拷貝構(gòu)造函數(shù)與賦值的區(qū)別

    拷貝構(gòu)造函數(shù)和賦值函數(shù)非常容易混淆,本文主要介紹了C++?拷貝構(gòu)造函數(shù)與賦值的區(qū)別,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-04-04
  • C語言練習(xí)之掃雷小游戲

    C語言練習(xí)之掃雷小游戲

    這篇文章主要為大家詳細(xì)介紹了C語言練習(xí)之掃雷小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • C++基于prim實(shí)現(xiàn)迷宮生成

    C++基于prim實(shí)現(xiàn)迷宮生成

    這篇文章主要為大家詳細(xì)介紹了C++基于prim實(shí)現(xiàn)迷宮生成,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • C語言?超詳細(xì)講解鏈接器

    C語言?超詳細(xì)講解鏈接器

    在C語言中,一個(gè)重要的思想就是分別編譯,即若干個(gè)源程序能夠在不一樣的時(shí)候單獨(dú)進(jìn)行編譯,而后在恰當(dāng)?shù)臅r(shí)候整合到一塊兒??墒擎溄悠魍ǔJ桥cC編譯器分離的,鏈接器如何作到把若干個(gè)C源程序合并成一個(gè)總體呢,我們一起來看看
    2022-03-03
  • C語言for語句用法詳解

    C語言for語句用法詳解

    今天,小編講訴C語言中循環(huán)語句(for)的使用方法,作為示例,以一個(gè)簡單的例子講訴for語法。
    2015-11-11

最新評論

郎溪县| 兰考县| 浦县| 抚松县| 旺苍县| 茶陵县| 石泉县| 云南省| 台北市| 临西县| 临颍县| 沽源县| 重庆市| 磐安县| 弥勒县| 大丰市| 嘉禾县| 蒲城县| 宁津县| 汨罗市| 临猗县| 蓝田县| SHOW| 峡江县| 名山县| 清水河县| 亚东县| 柯坪县| 莎车县| 吴川市| 灵山县| 东乌珠穆沁旗| 建平县| 盘山县| 武功县| 景德镇市| 新营市| 江门市| 昔阳县| 永福县| 宜丰县|