2021.4.8 更新:本文缺失重要部分,添加环境变量。大家评论和私信。此部分现在已经补齐。 2021.5.19 1.感谢各位朋友私信提问 目前看大家遇到的问题还是比较多 我会对文章进行一些修改尽量更加详细的说明各种步骤。2.貌似海康萤石一些新版本固件的ONVIF、RTSP功能受限,本人没有海康的设备无法测试只是道听途说但出于谨慎考虑还是提醒手上有用萤石的设备的同学请谨慎更新固件或使用替代方案。 2021.12.9 更新支持摄像头的列表以及部分错误修改 -------------------- 将监控摄像头变成电脑摄像头的基本思路,是用OBS抓取监控摄像头的RTSP视频流,之后由OBS-virtualcam虚拟一个摄像头,这样就可以让你电脑上需要调用摄像头的软件(如QQ、微信、Zoom)得到监控摄像头的画面。 本文假设读者了解基本的OBS使用方法以及对监控设备有基本的了解。 需要的软件:OBS,GStreamer,OBS-Gstreamer(插件),OBS-VirtualCam(插件)。此方法适用于64位WIndows 10。目前已知与Windows 7有兼容性问题此方法无法在Win7上实现请用Win10。 摄像头要求:摄像头或录像机必须能输出RTSP视频流。 如果使用的是IP摄像头,一般都支持RTSP视频流,根据厂商不同RTSP抓取视频流的地址可能不同。如果摄像头连接了NVR,视频流可以从NVR抓取。如果摄像头是模拟摄像头,则可以通过连接DVR抓取RTSP流。基本上海康(包括部分萤石产品)、大华、安讯士生产的任何网络摄像头(IPCAM),硬盘录像机(DVR),网络硬盘录像机(NVR)均可以抓取RTSP视频流。 如果摄像头是“云录像”摄像头,比如米家、360、nest、arlo、ring等,这个方法可能就不适用了。因为这些摄像头并没有公开的抓取RTSP视频流等方法,因此没办法使用本方法。 软件下载与安装:首先下载并安装OBS 然后安装OBS-Virtualcam插件 OBS Virtualcam 然后安装GStreamer 下载安装MinGW的runtime installer 下载完成Gstreamer后,我们需要将C:\gstreamer\1.0\x86_64\bin添加到环境变量path下。 不知道如何添加环境变量的小伙伴可以看看下面CSDN的操作方法。
然后安装OBS-Gstreamer插件,首先去Releases · fzwoch/obs-gstreamer然后安装OBS-Gstreamer插件,首先去
下载好zip后,将压缩包解压缩,将windows下的DLL放在C:\Program Files\obs-studio\obs-plugins\64bit下。
摄像头配置:摄像头或摄像头连接的硬盘录像机需要与运行OBS的电脑处于同一局域网下可以ping通。同时需要知道摄像头或录像机的用户名和密码。不同厂商的摄像头可能提供了摄像头搜索工具(如海康SADP、大华configtool),可以通过这些工具获取摄像头的IP地址。 摄像头默认会叠加OSD水印(时间和摄像头名)。如果这些影响效果可以通过配置摄像头关掉。需要注意的是关闭水印会导致录像也没水印,如果你连接的摄像头在监控请考虑这个操作是否会造成其他影响。引用下文是海康摄像头配置的方法。
配置摄像头码流:网络摄像头一般有两个码流,分辨率和帧率可能不一样。一般我们要让帧率在30以上以保证视频流长,同时尽量保证在这个帧率上视频分辨率尽量的高,最好1080P或720P。引用下文是海康的设置方法。
获取摄像头RTSP抓流地址:我们需要获取摄像头RTSP的取流地址。下文说明了大多数厂商摄像头的取流地址。由于不同厂商摄像头RTSP地址不同,且有很多摄像头不支持RTSP取流所以如果你没有办法获得摄像头的RTSP地址请更换设备。我们没办法对某单一设备解答,
使用摄像头WEB客户端(浏览器客户端)检查摄像头是否能预览(验证网络是否正常) 使用VLC验证RTSP地址有效:使用VLC打开摄像头RTSP地址,如果能看到摄像头画面则有效。否则根据VLC报错则根据报错检查原因(网络问题还是地址问题还是密码问题) 当VLC可以抓取摄像头RTSP后,即电脑可以与摄像头连通。我们可以打开OBS,添加一个GStreamer源。 在弹出的窗口中首先确认是不是下面截图的画面。如果不对或者OBS启动报错或者找不到GStreamer说明设置有问题。,删掉Pipeline中所有内容并替换成下文的内容 引用 @rtspsrc location="摄像头的RTSP取流地址" latency=0 buffer-mode=auto ! rtph264depay ! h264parse ! d3d11h264dec ! video.
我们以大华DVR为例(因为我手上就这个牌子) 这个设备的IP地址是10.0.0.97 用户名是admin密码是123456,我们要取第1通道的主码流 这个设备的RTSP取流地址是 引用 @rtsp://admin:123456@10.0.0.97/cam/realmonitor?channel=1&subtype=0
摄像头的RTSP地址要完整,包含前面的rtsp://,用户名、密码以及后面的通道号。 我们将这个地址揉搓一下,就是我们放入pipeline的内容 引用 @rtspsrc location="rtsp://admin:123456@10.0.0.97/cam/realmonitor?channel=1&subtype=0" latency=0 buffer-mode=auto ! rtph264depay ! h264parse ! d3d11h264dec ! video.
当我们将这个放入pipeline应该就可以看到画面了,点击OK就变成了OBS的输入。 启用OBS-Virtualcam,在聊天软件中选择正确的虚拟摄像头,就可以使用网络摄像头为普通电脑摄像头了。 注意事项: 1.摄像头要与电脑处于同一局域网,如果此局域网有互联网连接,一定要注意安全问题,给摄像头设置足够强的密码。可以设置一个专门RTSP取流的账号在摄像头里,通过这个账号只能预览画面,不能更改摄像头设置以及回放录像等。同时请按照摄像头生产厂商的建议进行安全设置,配置防火墙等。 2.如果有条件尽量使用网线(经过交换机或直接)连接。 3.OBS内置了RTSP取流,但是此功能延迟很高!这也是为什么我们通过GStreamer插件取流。 4.如果你的摄像头是会议摄像头、广播级PTZ摄像头,这些摄像头有可能没有RTSP输出但有其他形式(USB、NDI、HDMI等)输出,需要是用其他方式(如USB就当作普通摄像头,NDI需要obs-ndi插件,HDMI需要通过采集卡)采集信号,此文不适用。 5.如果你的摄像头是机器视觉摄像头等奇葩摄像头,则可能可以USB连接。如果实在不知道怎么连接,任何摄像头都可以通过OBS直接采集预览窗口的画面达到类似的功能。 6.如果OBS没有Gstreamer选项,检查环境变量。 7.如果摄像头在Gstreamer里打不开,拿VLC检查能否取流RTSP。请注意检查摄像头IP、摄像头取流地址以及取流地址中的用户名密码是否正确。 8.本人电脑环境为英文版WIndows10 测试录像机为Lorex(大华贴牌)。 9.如果觉得上面的麻烦 OBS有内置RTSP取流,不经过插件 但是延迟很高 不过也不是完全不能用
|