使用监控摄像头通过OBS取流变身电脑摄像头

小编这里的应用场景为 “使用摄像头作为线上会议摄像头进行取流”,方便会议

使用到的软件工具:OBS Studio、VCL

系统环境:64位Windows 10系统

使用的摄像头为:大华

摄像头主码流:h.265

  • tips:此方法仅适用于x64 Windows 10,目前已知此方法在Windows 7上无法实现
  • 摄像头要求:摄像头或录像机必须能支持RTSP视频流
  • 如果使用的是IP摄像头,那一般都支持RTSP视频流

将监控摄像头变成电脑摄像头的基本思路,是用OBS抓取监控摄像头的RTSP视频流,之后由OBS-virtualcam虚拟一个摄像头,这样就可以让你电脑上需要调用摄像头的软件(如QQ、微信、腾讯会议)得到监控摄像头的画面。

一、OBS下载与安装

首先去OBS官网下载

小编这里使用的版本为 28.1.2 是截止目前的最新版本,从OBS Studio26.1版本之后已经支持Virtualcam模块,所以大家不需再次下载OBS-Virtualcam插件

这里给大家展示下载界面:

java 使用 obs 获取摄像头数据 obs采集网络摄像头_搜索

这里我们选择点击Windows下载,会重定向页面直接进行下载。如果弹出页面却没有下载的话,这里请大家耐心等待下。

安装步骤就是一路的Next,但这里小编还是不推荐大家装到D盘

java 使用 obs 获取摄像头数据 obs采集网络摄像头_搜索_02

安装完成后运行OBS Studio软件进入初始界面:

java 使用 obs 获取摄像头数据 obs采集网络摄像头_电脑_03

二、GStreamer下载与安装

GStreamer 是用来构建流媒体应用的开源多媒体框架(framework),其目标是要简化音/视频应用程序的开发,已经能够被用来处理像 MP3、Ogg、MPEG1、MPEG2、AVI、Quicktime 等多种格式的多媒体数据。

小编这里也不过多赘述了,此处使用它的作用说白了就是降低延迟,不适用GStreamer虽然可以实现,但延迟大约在5秒左右

1.下载

这里是GStreamer官方下载地址

首先点击Download进入下载页面

java 使用 obs 获取摄像头数据 obs采集网络摄像头_电脑_04

这里我们选择MinGW 64-bit,点击第一个进行下载安装

java 使用 obs 获取摄像头数据 obs采集网络摄像头_java 使用 obs 获取摄像头数据_05

2.安装

安装步骤就是一路Next

java 使用 obs 获取摄像头数据 obs采集网络摄像头_用户名_06

3.添加环境变量

安装完成后需要我们手动添加环境变量,这里因为安装时并没有选择安装目录的流程,所以大家的安装目录可能会有所不同。

这里小编推荐大家打开此电脑搜索框内输入GStreamer进行搜索。

大家可以看到,小编的GStreamer被安装到了D盘下

java 使用 obs 获取摄像头数据 obs采集网络摄像头_java 使用 obs 获取摄像头数据_07

找到位置之后,我们回到桌面,右击此电脑,点击属性

java 使用 obs 获取摄像头数据 obs采集网络摄像头_java 使用 obs 获取摄像头数据_08

这里我们找到右边,点击高级系统设置

![在这里插入图片描述](

java 使用 obs 获取摄像头数据 obs采集网络摄像头_电脑_09

打开后点击环境变量,进行配置

java 使用 obs 获取摄像头数据 obs采集网络摄像头_windows_10

在下边的系统变量上找到Path,双击打开进行添加

java 使用 obs 获取摄像头数据 obs采集网络摄像头_用户名_11

这里避免我们输入错误,直接点击浏览

java 使用 obs 获取摄像头数据 obs采集网络摄像头_windows_12

找到我们之前搜索到的GStreamer文件夹,展开此文件夹,选择bin目录

这里要根据自己的GStreamer文件夹目录进行添加

java 使用 obs 获取摄像头数据 obs采集网络摄像头_java 使用 obs 获取摄像头数据_13

添加完成后,点击所有的确定即可添加完成

java 使用 obs 获取摄像头数据 obs采集网络摄像头_电脑_14

三、添加插件

这里我们需要的OBS-Gstreame插件在GitHub上,部分用户链接打不开的话可使用加速器

OBS-Gstreame插件链接点击这里👈

这里推荐大家去微软商店下载Watt Toolkit

软件很小但很强大,重要的是免费!!!

java 使用 obs 获取摄像头数据 obs采集网络摄像头_用户名_15

这里选择GitHub后点击一键加速,出现下图后即为加速成功

  • 部分用户电脑装有虚拟机,会占用端口,这里需要关掉虚拟机后重试

java 使用 obs 获取摄像头数据 obs采集网络摄像头_电脑_16

java 使用 obs 获取摄像头数据 obs采集网络摄像头_搜索_17

加速成功后重新进入页面进行下载

java 使用 obs 获取摄像头数据 obs采集网络摄像头_搜索_18

下载完成后将里边的windows文件夹里的obs-gstreamer.dll文件添加到OBS安装目录里的插件目录里

java 使用 obs 获取摄像头数据 obs采集网络摄像头_windows_19

到这里我们的基本配置就结束了,终于要开始进行接入啦

四、测试环境

摄像头配置:摄像头或摄像头连接的硬盘录像机需要与运行OBS的电脑处于同一局域网下且可以ping通。同时需要知道摄像头或录像机的用户名和密码。不同厂商的摄像头可能提供了摄像头搜索工具(如海康SADP、大华configtool)

这里需要下载VLC进行连接测试

直接进入VLC官网点击下载,直接一路下一步进行安装

java 使用 obs 获取摄像头数据 obs采集网络摄像头_windows_20

安装完成后双击打开,左上角点击媒体 -> 打开网络串流

java 使用 obs 获取摄像头数据 obs采集网络摄像头_用户名_21

这里添加链接进去,模板是下边的,大家复制改为自己的就好

rtsp://用户名:密码@摄像头IP地址/cam/realmonitor?channel=1&subtype=0

java 使用 obs 获取摄像头数据 obs采集网络摄像头_windows_22

配置完成点击播放出来如果出来画面后即为配置成功!

java 使用 obs 获取摄像头数据 obs采集网络摄像头_电脑_23

五、添加摄像机

打开OBS Studio,点击➕号添加GStreamer Source

java 使用 obs 获取摄像头数据 obs采集网络摄像头_java 使用 obs 获取摄像头数据_24

这里也是,复制下边的链接进行修改,添加后点击确定

rtspsrc location="rtsp://用户名:密码@摄像头IP地址/cam/realmonitor?channel=1&subtype=0" latency=0 buffer-mode=auto ! rtph265depay ! h265parse ! d3d11h265dec ! video.

java 使用 obs 获取摄像头数据 obs采集网络摄像头_java 使用 obs 获取摄像头数据_25

添加完成后点击启动虚拟录像机即可进行调用

java 使用 obs 获取摄像头数据 obs采集网络摄像头_搜索_26

六、接入会议

我们在线上会议的时候就可以调用OBS虚拟摄像机进行调用

java 使用 obs 获取摄像头数据 obs采集网络摄像头_用户名_27

注意事项

  • 摄像头要与电脑处于同一局域网,如果此局域网有互联网连接,一定要注意安全问题,给摄像头设置足够强的密码。可以设置一个专门RTSP取流的账号在摄像头里,通过这个账号只能预览画面,不能更改摄像头设置以及回放录像等。同时请按照摄像头生产厂商的建议进行安全设置,配置防火墙等。
  • 如果有条件尽量使用网线(经过交换机或直接)连接。
  • OBS内置了RTSP取流,但是此功能延迟很高!这也是为什么我们通过GStreamer插件取流。
  • 如果你的摄像头是会议摄像头、广播级PTZ摄像头,这些摄像头有可能没有RTSP输出但有其他形式(USB、NDI、HDMI等)输出,需要是用其他方式(如USB就当作普通摄像头,NDI需要obs-ndi插件,HDMI需要通过采集卡)采集信号,此文不适用。
  • 如果你的摄像头是机器视觉摄像头等奇葩摄像头,则可能可以USB连接。如果实在不知道怎么连接,任何摄像头都可以通过OBS直接采集预览窗口的画面达到类似的功能。
  • 如果OBS没有Gstreamer选项,检查环境变量。
  • 如果摄像头在Gstreamer里打不开,拿VLC检查能否取流RTSP。请注意检查摄像头IP、摄像头取流地址以及取流地址中的用户名密码是否正确。
  • 本人电脑环境为英文版WIndows10 测试录像机为Lorex(大华贴牌)。
  • 如果觉得上面的麻烦 OBS有内置RTSP取流,不经过插件 但是延迟很高 不过也不是完全不能用