news 2026/4/29 4:59:24

QT接入播放摄像头RTSP流

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
QT接入播放摄像头RTSP流
  • 如果想直接用源码工程,到这里下载

https://download.csdn.net/download/quantum7/89730058

  • 安装QT环境

  • 下载VLC SDK文件

这里并不是调用安装的VLC,所以需要下载SDK。

所有版本:

https://download.videolan.org/pub/videolan/vlc/

最新版:

https://download.videolan.org/pub/videolan/vlc/last/

注意要下载后缀是7z的文件。

  • 需要的文件

sdk:编译需要的头文件和库文件。

plugs/libvlc.dll/libvlccore.dll:运行需要的文件。

  • 修改pro文件
INCLUDEPATH += $$PWD\sdk\include LIBS += $$PWD\sdk\lib\libvlc.lib \ $$PWD\sdk\lib\libvlccore.lib
  • mainwindow.h文件

#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <vlc/vlc.h> #define RTSP_STREAM "rtsp://192.168.1.100/live" QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACE class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = nullptr); ~MainWindow(); public slots: void OpenRtspStream(); public: void MediaShowWindow(libvlc_media_player_t*player); void MediaPlayerPlay(); private: Ui::MainWindow *ui; libvlc_instance_t*m_instence; libvlc_media_player_t*m_vlcplayer = nullptr; bool is_playing = false; int m_currentVolume; }; #endif // MAINWINDOW_H
  • mainwindow.cpp文件
#include "mainwindow.h" #include "ui_mainwindow.h" #include <QDebug> #include <QFileDialog> #include <QMessageBox> #include <vlc/libvlc_media.h> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); //初始化 ui->btn_play->setText("暂停"); ui->Slider_volume->setMaximum(100); ui->Slider_volume->setValue(100); m_instence = libvlc_new(0,nullptr); if(m_instence == nullptr){ qDebug()<<"instence null"; }else{ qDebug()<<"ok..."; } //选择文件 connect(ui->btn_open,&QPushButton::clicked,this,&MainWindow::OpenRtspStream); //播放暂停 connect(ui->btn_play,&QPushButton::clicked,this,[=](){ if(m_vlcplayer == nullptr){ QMessageBox::warning(this,"无视频","请选择一个视频"); return; } if(is_playing){ libvlc_media_player_pause(m_vlcplayer); ui->btn_play->setText("播放"); is_playing = false; }else{ libvlc_media_player_play(m_vlcplayer); ui->btn_play->setText("暂停"); is_playing = true; } }); //音量调节 connect(ui->Slider_volume,&QSlider::valueChanged,this,[=](int value){ if(m_vlcplayer != nullptr){ int volume = static_cast<int>(static_cast<float>(value) / ui->Slider_volume->maximum() * 100); libvlc_audio_set_volume(m_vlcplayer, volume); m_currentVolume = volume; ui->statusbar->showMessage("音量为: " + QString::number(volume)); } }); } MainWindow::~MainWindow() { if(m_instence != nullptr){ libvlc_release(m_instence); m_instence = nullptr; } delete ui; } void MainWindow::OpenRtspStream() { if(m_vlcplayer != nullptr){ libvlc_media_player_stop(m_vlcplayer); libvlc_media_player_release(m_vlcplayer); m_vlcplayer = nullptr; } libvlc_media_t* media = libvlc_media_new_location(m_instence, RTSP_STREAM); libvlc_media_add_option(media, ":network-caching=300") m_vlcplayer = libvlc_media_player_new_from_media(media); libvlc_media_release(media); //设置窗口句柄 MediaShowWindow(m_vlcplayer); //播放 MediaPlayerPlay(); } void MainWindow::MediaShowWindow(libvlc_media_player_t *player) { libvlc_media_player_set_hwnd(player,(void*)ui->widget_player->winId()); } void MainWindow::MediaPlayerPlay() { if(m_vlcplayer == nullptr){ qDebug()<<"m_vlcplayer is null"; return; } libvlc_media_player_play(m_vlcplayer); is_playing = true; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/29 4:55:23

Termius中文版完全指南:安卓SSH客户端的专业汉化解决方案

Termius中文版完全指南&#xff1a;安卓SSH客户端的专业汉化解决方案 【免费下载链接】Termius-zh_CN 汉化版的Termius安卓客户端 项目地址: https://gitcode.com/alongw/Termius-zh_CN 在移动端远程服务器管理领域&#xff0c;Termius无疑是功能最强大的SSH客户端之一。…

作者头像 李华
网站建设 2026/4/29 4:52:21

终极iOS权限请求指南:Permission库预授权弹窗的完整实现方案

终极iOS权限请求指南&#xff1a;Permission库预授权弹窗的完整实现方案 【免费下载链接】Permission A unified API to ask for permissions on iOS 项目地址: https://gitcode.com/gh_mirrors/pe/Permission Permission是一个功能强大的iOS统一权限请求API库&#xff…

作者头像 李华
网站建设 2026/4/29 4:47:04

轻松解决图表零点空白问题

在使用TradingView的轻量级图表库进行图表绘制时,很多开发者可能会遇到一个常见的问题:如何避免图表底部出现空白区域,特别是当图表的最低点不是零点时。这个问题不仅影响图表的美观,还可能会对数据的分析造成误导。今天,我们将探讨如何利用scaleMargins属性来解决这个问题…

作者头像 李华
网站建设 2026/4/29 4:41:30

视频压缩技巧:如何最大限度减小文件大小,同时保持优质画质?

在现代社交媒体和视频共享平台的流行背景下&#xff0c;视频压缩成为了一项重要的任务。压缩视频可以减小文件大小&#xff0c;提高传输速度和存储效率&#xff0c;同时确保视频画质的优质保持。本文将介绍一些常用的视频压缩技巧和工具&#xff0c;帮助您实现视频文件的瘦身。…

作者头像 李华
网站建设 2026/4/29 4:41:03

电脑总蓝屏?联想官方蓝屏诊断工具保姆级教程,快速定位故障原因

电脑蓝屏是很多 Windows 用户最头疼的问题之一&#xff0c;突然黑屏蓝屏、代码看不懂、不知道是驱动、系统、硬件还是软件冲突&#xff0c;反复重启也解决不了&#xff0c;自己排查费时费力&#xff0c;找维修又担心被坑。尤其联想台式机、笔记本、ThinkPad 等机型用户&#xf…

作者头像 李华
网站建设 2026/4/29 4:40:13

YiVal与LiteLLM集成:实现跨模型统一接口的终极指南

YiVal与LiteLLM集成&#xff1a;实现跨模型统一接口的终极指南 【免费下载链接】YiVal Your Automatic Prompt Engineering Assistant for GenAI Applications 项目地址: https://gitcode.com/gh_mirrors/yi/YiVal YiVal作为Your Automatic Prompt Engineering Assistan…

作者头像 李华