Windows电脑如何启动RTSP服务实现本地摄像头数据共享
技术背景
提起Windows共享本地摄像头,好多人想到的是通过ffmepg或vlc串流到服务器,实际上,用轻量级RTSP服务更简单,本文就介绍下,如何用大牛直播SDK的Windows轻量级RTSP服务,采集摄像头,生成本地RTSP串流,供其他终端访问。
技术实现
启动大牛直播SDK的SmartPublisherDemo.exe,先选择摄像头,配置分辨率、帧率码率,“采集摄像头”-->选择需要共享的摄像头,并选择分辨率和帧率,如果需要采集麦克风或扬声器,勾选即可。

点击“配置查看Rtsp服务”按钮,选择一个端口,点“启动服务”,如需启动多端口服务(对应多个拉流url),点“确定”,返回上级界面:

点“发布Rtsp流”,播放地址会回调生成可拉流的rtsp的url。

把rtsp url拷贝到播放器进行播放:

如果需要查看本地摄像头数据,或比较整体延迟,可点击“预览”按钮,实现本地摄像头数据预览。

总结
之前说过多次,轻量级RTSP服务的优势是,无需用户单独部署RTSP或者RTMP服务,即可实现本地的音视频数据(如摄像头、屏幕、窗体、麦克风、扬声器),编码后,汇聚到内置RTSP服务,然后,对外提供可供拉流的RTSP URL。
轻量级RTSP服务,仅限于内网环境下使用,如模块名字,适用于并发不大的场景,支持H.264/H.265,支持RTSP鉴权、单播、组播模式,考虑到单个服务承载能力,也支持同时创建多个RTSP服务,并支持获取当前RTSP服务会话连接数。
除了可以采集编码前数据外,还可以对接编码后的H.264、H.265、AAC数据,也可以配合拉流模块,拉取外部RTSP或RTMP流,汇聚到轻量级RTSP服务。
总体技术架构设计如下:

Windows平台轻量级RTSP服务功能设计如下:
- 音频编码:AAC;
- 视频编码:H.264、H.265;
- 协议类型:RTSP;
- [音视频]支持纯音频/纯视频/音视频推送;
- [屏幕/摄像头]支持帧率、关键帧间隔(GOP)、码率(bit-rate)设置;
- [屏幕]支持屏幕裁剪,根据帧率和推送分辨率,自动推荐码流;
- [摄像头]支持摄像头选择、分辨率设置、帧率设置;
- [摄像头]摄像头支持水平反转、垂直反转、0° 90° 180° 270°旋转;
- [屏幕]支持DXGI采集设置、启/停用Aero;
- [音频]采集麦克风;
- [音频]采集扬声器;
- [预览]支持推送端实时预览;
- 支持实时静音、取消静音;
- 屏幕和摄像头合成/多层合成;
- 支持窗口采集(一般不建议使用);
- 支持实时动态水印;
- 支持实时快照;
- 支持降噪处理、自动增益控制、VAD端点检测;
- 支持扬声器和麦克风混音;
- 支持外部编码前音视频数据对接;
- 支持外部编码后音视频数据对接;
- 支持特定机型硬编码;
- 支持实时音量调节;
- 支持扩展录像模块;
- 支持RTSP端口设置;
- 支持RTSP鉴权用户名、密码设置;
- 支持获取当前RTSP服务会话连接数。
- 支持Unity接口;
- 支持H.264扩展SEI发送模块;
- 支持Windows7及以上版本。
如需在现有工程,集成轻量级RTSP服务,Windows平台,大牛直播SDK提供了C++/C#两套接口,对外提供32/64位debug/release库,C++和C#接口一一对应,C#接口比C++接口增加前缀NT_PB_。
C++头文件:
- [类型定义]nt_type_define.h
- [Log定义]smart_log.h
- [Log定义]smart_log_define.h
- [音视频类型定义]nt_common_media_define.h
- [base code定义]nt_base_code_define.h
- [publisher接口]nt_smart_publisher_define.h
- [publisher接口]nt_smart_publisher_sdk.h
C#头文件:
- [Log定义]smart_log.cs
- [Log定义]smart_log_define.cs
- [音视频类型定义]nt_common_media_define.cs
- [base code定义]nt_base_code_define.cs
- [publisher接口]nt_smart_publisher_define.cs
- [publisher参数定义]nt_smart_publisher_sdk.cs
相关Lib:
- SmartLog.dll
- SmartLog.lib
- SmartPublisherSDK.dll
- SmartPublisherSDK.lib
- NTSmartPublisherWinRTSDK.dll
- avcodec-56.dll
- avdevice-56.dll
- avfilter-5.dll
- avformat-56.dll
- avutil-54.dll
- postproc-53.dll
- swresample-1.dll
- swscale-3.dll
轻量级RTSP服务模块,可满足安防监控、内网无纸化、智慧教室等内网场景,通过接口即可实现和自身业务逻辑对接,无需单独部署流媒体服务,使用更便捷,除Windows平台外,Linux(x64_64架构|aarch64)、Android、iOS平台也都覆盖,感兴趣的开发者,可以单独跟我沟通。
相关文章:
Windows电脑如何启动RTSP服务实现本地摄像头数据共享
技术背景 提起Windows共享本地摄像头,好多人想到的是通过ffmepg或vlc串流到服务器,实际上,用轻量级RTSP服务更简单,本文就介绍下,如何用大牛直播SDK的Windows轻量级RTSP服务,采集摄像头,生成本…...
探索 Spring WebFlux:构建响应式 Web 应用
探索 Spring WebFlux:构建响应式 Web 应用 随着互联网的发展,传统的同步编程模型已经难以应对高并发和高吞吐量的需求。为了解决这些问题,响应式编程逐渐成为主流。Spring WebFlux 是 Spring 5 引入的一个响应式 Web 框架,它基于…...
C# 植物大战僵尸
Winform 版本开发 高效率、流畅植物大战僵尸 git地址:冯腾飞/植物大战僵尸...
css 作业 2
文章目录 前言第四题第五题第六题第七题第八题第九题第十题(子标签) 前言 昨天写了前面三次作业,今天把剩下的七个作业写完 第四题 http://127.0.0.1:5500/index1.html,就用这个网址查看代码在网页的展示效果 代码评测过不了&…...
axios在vue中的使用
文章目录 一、axios是什么?二、使用步骤2.1 下载2.2 引入2.3 使用Get请求Post请求Forms 三、封装 一、axios是什么? Axios 是一个基于 promise 网络请求库,作用于node.js 和浏览器中。 它是 isomorphic 的(即同一套代码可以运行在浏览器和no…...
FastAPI(七十七)实战开发《在线课程学习系统》接口开发-- 课程编辑和查看评论
源码见:"fastapi_study_road-learning_system_online_courses: fastapi框架实战之--在线课程学习系统" 课程编辑 先来看下课程编辑 1.判断是否登录 2.判断课程是否存在 3.是否有权限(只有自己可以修改自己的课程) 4.名称是否重复…...
【JavaEE初阶】线程的概念及创建
目录 📕 前言 📕 认识线程(Thread) 🚩 概念 😊线程是什么 🙂 为啥要有线程 😭 进程和线程的区别(面试题重点) 🤭 Java的线程和操作系统线程…...
0727,学什么学,周六就应该休息!!!!!
周六就应该休息,一天就忙了两小时也不是我的错喵 目录 UDP的小总结 01:使用select实现一个基于UDP的一对一即时聊天程序。 1.0 复读机服务器和树洞客户端 2.0 byby不了一点的敬业服务器!!! 今天到此为止&#x…...
【C#】获取DICOM图像像素的像素值
8位像素深度的像素值 public byte GetGreyValue(int x, int y) {x Math.Min(x, m_nWidth - 1);y Math.Min(y, m_nHeight - 1);unsafe{byte* greyValue (byte*)m_pDicomData.ToPointer() y * m_nWidth x;return *greyValue;} } 16位像素深度的像素值 public ushort GetG…...
k8s多集群管理工具kubecm
文章目录 一、概述二、安装1、官网链接2、各平台安装2.1、MacOS2.2、Linux2.3、Windows 三、实例1、验证2、配置kubecm自动补全(选做)2.1、Bash2.2、Zsh2.3、fish2.4、PowerShell 3、创建存放kubeconfig文件的目录4、添加到 $HOME/.kube/config4.1、kube…...
通过 WSL 2 在Windows 上挂载 Linux 磁盘
原文查看 曾为了传输或者共享不同系统的文件频繁地在 Windows 和 Linux 系统之间切换,效率过低,所以尝试通过 WSL 2 在Windows 上挂载 Linux 磁盘。 先决条件 需要在Windows 10 2004 及更高版本(Build 19041 及更高版本)或 Win…...
【C#】在一个给定的宽、高范围内,获取到该多边形内部的所有坐标集合?
问题点 使用C#语言在一个给定的宽、高范围内,获取到该多边形内部的所有坐标集合? 这个多边形可能存在交叉及互相重叠部分 图像的宽、高可以定义为:2000*2000 多边形坐标集合:Point[] polygon_points new Point[] { new Point…...
json的数据结构
JSON 的数据结构 JSON 由两种数据结构组成:对象(字典)和数组。 一、对象 对象(object)是由键值对组成的无序集合。 键是字符串,值可以是任何类型,包括对象和数组;对象由一对花括…...
html-docx-js和file-saver实现html导出word
依赖html-docx-js,file-saver,html2canvas import { asBlob } from html-docx-js/dist/html-docx; import { saveAs } from file-saver; import html2Canvas from html2canvas;const handleImageToBase64 (cloneEle) > {let imgElements cloneEle.…...
三维影像系统PACS源码,图像存储与传输系统,应用于医院中管理医疗设备如CT,MR等产生的医学图像的信息系统
PACS,即图像存储与传输系统,是应用于医院中管理医疗设备如CT,MR等产生的医学图像的信息系统。目标是支持在医院内部所有关于图像的活动,集成了医疗设备,图像存储和分发,数字图像在重要诊断和会诊时的显示&a…...
Golang | Leetcode Golang题解之第292题Nim游戏
题目: 题解: func canWinNim(n int) bool {return n%4 ! 0 }...
Redis在SpringBoot中配置
lettuce redis的使用方法有两种,jedis和lecttuce,jedis用的不是很多,下面讲解用lettuce的使用方法。 首先导包: <!--redis依赖--> <dependency><groupId>org.springframework.boot</groupId><artif…...
linux 网络子系统
__netif_receive_skb_core 是 Linux 内核网络子系统中一个非常重要的函数,它负责将网络设备驱动层接收到的数据包传递到上层协议栈进行处理。以下是对该函数的一些关键点的详细解析: 一、函数作用 __netif_receive_skb_core 函数是处理接收到的网络数据…...
JVM:垃圾回收器演进
文章目录 一、演进二、Shenandoah三、ZGC 一、演进 二、Shenandoah Shenandoah是由Red Hat开发的一款低延迟的垃圾收集器,Shenandoah并发执行大部分GC工作,包括并发的整理,堆大小对STW的时间基本没有影响。 三、ZGC ZGC是一种可扩展的低延…...
全新微软语音合成网页版源码,短视频影视解说配音网页版系统-仿真人语音
源码介绍 最新微软语音合成网页版源码,可以用来给影视解说和短视频配音。它是TTS文本转语言,API接口和PHP源码。 这个微软语音合成接口的源码,超级简单,就几个文件搞定。用的是官方的API,试过了,合成速度…...
SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...
Cursor实现用excel数据填充word模版的方法
cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...
突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合
强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...
Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...
STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...
深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...
【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...
今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存
文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...
处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的
修改bug思路: 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑:async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...
