当前位置: 首页 > news >正文

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; }
http://www.jsqmd.com/news/717490/

相关文章:

  • Phi-3.5-Mini-Instruct效果实测:支持中英混合输入并保持上下文语义连贯
  • Chapter 6:Graph 状态机深度实战
  • 苹果Ultra时代来临:是创新突围还是高端收割?
  • Linux源码神级编辑器vim+cscope插件
  • Switch游戏文件终极管理工具:NSC_BUILDER 完整使用指南
  • 音乐搜索器故障排查大全:解决数据获取失败、播放错误等常见问题
  • 3步解锁B站缓存视频:m4s-converter让你的离线收藏重获新生
  • 2026年苹果手机照片去背景怎么操作?iOS照片去背景自带功能与3种微信小程序方案对比
  • Reallusion与NVIDIA AI整合:数字角色动画技术革新
  • OpenClaws智能路由管家:策略驱动流量调度与多出口优化实践
  • NVIDIA PhysicsNeMo:让物理与AI完美融合的深度学习框架终极指南
  • 2026年魏德米勒代理商哪家正规?从授权资质、产品正品、技术服务三方面筛选,推荐优质正规代理商 - 栗子测评
  • VS Code Copilot Next 自动化工作流配置:3步零代码搭建CI/CD智能体,企业级成本控制策略首次公开
  • MCP插件安全加固手册,覆盖OAuth2.1令牌绑定、IPC信道加密、沙箱逃逸防护——通过ISO/IEC 27001审计验证
  • 手把手教你为Unity自定义UI组件编写Shader,支持RectMask2D遮罩
  • 如何快速上手ReaLTaiizor:5分钟从零开始构建现代化UI
  • TinyGSM项目部署实战:从原型到生产环境的完整流程
  • 02华夏之光永存・开源:黄大年茶思屋榜文解法「23期 2题」 【FDD信道重构权值联合设计专项完整解法】
  • 别再套模板了!一份真正能落地的软件测试大纲应该长这样(附实战避坑点)
  • MySQL启动或安装时找不到XXX.dll(仅提供思路)
  • Freyr-js技术架构深度解析:多服务集成与音频处理流程
  • 2026 年松下传感器代理商选哪家?从授权资质、库存交付、技术支持筛选正规代理商 - 栗子测评
  • 告别纯数据炼丹:用PINN(物理信息神经网络)解决你的小样本建模难题
  • 通达信缠论插件:3分钟让复杂技术分析变简单
  • 用STM32F103的TIM2定时器驱动DM542,搞定42步进电机正反转(附CubeMX配置)
  • Cordova Android安全最佳实践:白名单机制与代码保护终极指南
  • Chapter 7:生产级设计:错误处理与可观测性
  • 2026年3月mpp电力管直销厂家推荐,七孔梅花管/双壁波纹管/钢带波纹管/pe管/mpp电力管,mpp电力管厂家哪个好 - 品牌推荐师
  • 手把手教你用STM32F103C8T6的软件IIC驱动MPU6050(附完整代码与调试心得)
  • FastSpeech2代码实现原理:从Transformer到Variance Adaptor的深度解析