1、RTSP协议

RTSP (Real Time Streaming Protocol),是一种语法和操作类似 HTTP 协议,专门用于音频和视频的应用层协议。 和 HTTP 类似,RTSP 也使用 URL 地址。同时我们也要了解到摄像机传输数据用的是码流,高清网络摄像机产品编码器都会产生两个编码格式,称为主码流和子码流。这就叫双码流技术。目的是用于解决监控录像的本地存储和网络传输的图像的质量问题。双码流能实现本地和远程传输的两种不同的带宽码流需求,本地传输可以用主码流,能获得更清晰的存储录像,远程传输就因为带宽限制的原因,而使用子码流来获得流畅的图像和录像。通过RTSP协议传输不同的码流,但是各大摄像头厂家的RTSP协议地址不大一样。通常你只要知道摄像头IP地址,用户名密码就行了。

海康的RTSP协议地址

rtsp://[username]:[password]@[ip]:[port]/[codec]/[channel]/[subtype]/av_stream
1) username  用户名,常用 admin
2) password  密码,常用 12345
3) ip        摄像头IP,如 192.0.0.64
4) port      端口号,默认为 554,可以不写
5) codec     视频编码模式,有 h264、MPEG-4、mpeg4 等,可以不写
6) channel   通道号,起始为1,例如通道1,则为 ch1
7) subtype   码流类型,主码流为 main,辅码流为 sub

大华的RTSP协议地址如下:

rtsp://[username]:[password]@[ip]:[port]/cam/realmonitor?[channel=1]&[subtype=1]
1) username、password、ip、port 同上
2) channel  通道号,起始为1,例如通道2,则为 channel=2
3) subtype  码流类型,主码流为0(即 subtype=0),辅码流为1(即 subtype=1)

2、OpenCV中读取网络摄像头

OpenCV读取网络摄像头很简单,直接用url设定rtsp地址,用VideoCapture读取视频就行了。但是RTSP有些许问题,所以在最后通过TCP传输协议上承载RTSP,保证稳定性。就在rtsp地址后面加?

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>int main(){cv::VideoCapture vcap;cv::Mat image;//网络摄像头地址const std::string videoStreamAddress = "rtsp://admin:admin123@192.168.0.109:554/cam/realmonitor?channel=1&subtype=0";/* it may be an address of an mjpeg stream,e.g. "http://user:pass@cam_address:8081/cgi/mjpg/mjpg.cgi?.mjpg" *///open the video stream and make sure it's openedif (!vcap.open(videoStreamAddress)) {std::cout << "Error opening video stream or file" << std::endl;return -1;}cv::namedWindow("Output Window");for (;;) {if (!vcap.read(image)) {std::cout << "No frame" << std::endl;cv::waitKey();}cv::imshow("Output Window", image);if (cv::waitKey(1) >= 0) break;}
}

OpenCV获取网络摄像头实时视频流相关推荐

  1. [常用工具] OpenCV获取网络摄像头实时视频流

    所需要硬件及软件环境: python 3/OpenCV3.4 or C++11/OpenCV3.4 1 RTSP协议 RTSP (Real Time Streaming Protocol),是一种语法 ...

  2. C#通过OpenCv获取网络摄像头(IP摄像头)拍摄到的视频

    @TOC 本文介绍 本文介绍利用C#获取IP摄像头拍摄到的实时视频 说在前面 首先需要一台支持rtsp协议的网络摄像头(购买的时候会有说明,或者问客服) 环境:visual studio 2017 网 ...

  3. 利用opencv获取网络摄像头数据并显示报错 select() timeout

    opencv官网demo-Capture Video from Camera : import numpy as np import cv2 as cv cap = cv.VideoCapture(0 ...

  4. 网络摄像头python_Python OpenCV 调用网络摄像头

    OpenCV调用摄像头 环境 python:python3.6 摄像头:网络摄像头 Python库:openCV # -*- coding: utf-8 -*- # @author leone # @ ...

  5. OpenCV 调用网络摄像头

    OpenCV调用摄像头 环境 python:python3.6 摄像头:网络摄像头 Python库:openCV # -*- coding: utf-8 -*-# @author leone # @d ...

  6. 使用Python,OpenCV实现图像和实时视频流中的人脸模糊和马赛克

    使用Python,OpenCV实现图像和实时视频流中的人脸模糊和人脸马赛克 1. 效果图 2. 原理 2.1 什么是人脸模糊,如何将其用于人脸匿名化? 2.2 执行人脸模糊/匿名化的步骤 3. 源码 ...

  7. opencv 打开网络摄像头

    闲着没事从同学那里找到了个openwrt   ,突然间想起来OPENCV可以很轻松的打开自带的摄像头,刚开始学习OPENCV 打开过若干次笔记本的摄像头,OPENCV能否打开网络摄像头呢?在百度上搜资 ...

  8. 使用ONVIF Device Test Tool获取网络摄像头的音/视频

    软/硬件准备 1.一个网络摄像头(IPC),品牌必须支持ONVIF协议,具体哪些品牌支持不作为本教程介绍的重点,大家可自行度娘,我知道的有品牌大华和海康威视; 2.ONVIF Device Test ...

  9. html 输入框并行,Python:输入文本框并行捕获userinput到OpenCV Live网络摄像头图像...

    我有一个简单的脚本运行流式传输我的网络摄像头的图像,我想做一些像canny-filter和hough转换一样的操作来检测liveimage中的行:Python:输入文本框并行捕获userinput到O ...

最新文章

  1. 微软宣布MySQL和PostgreSQL的Azure数据库服务正式可用
  2. 编译时异常和运行时异常的区别
  3. 浅谈Spring MVC知识
  4. Java中使用递归算法实现子级架构的查询
  5. Linux之查看ubuntu版本
  6. python中的sort,sorted
  7. 腾讯海量存储与CDN的自动化运维
  8. python基础:序列(列表、元组、字符串)、函数、字典、集合
  9. java io顺序_Java顺序IO性能
  10. arrays中copyof复制两个数组_Java的数组初识和拷贝用法
  11. 【剑指offer】面试题14- I:剪绳子(Java)
  12. 推荐一个Silverlight多文件(大文件)上传的开源项目(转载)
  13. SRM 207 Div II Level Two: RegularSeason,字符串操作(sstream),多关键字排序(操作符重载)...
  14. UVA10317- Equating Equations(回溯+剪枝)
  15. SQL Server的下载和安装
  16. unity识别图片颜色并把颜色数量排序
  17. day15-医生的处方、道士的鬼符、程序员的正则表达式
  18. 计算机发展简史的ppt教程,计算机发展简史PPT.ppt
  19. TextView 加下划线 、 中划线
  20. 游戏后台之内存管理篇

热门文章

  1. /usr/bin/ld:找不到 -lxxx
  2. Ubuntu下web开发,php编辑器推荐
  3. macOS 下 Electron 程序的签名及公证
  4. Hadoop之金庸江湖人物关系网分析
  5. [原创] poi-tl 合并word文档 (使用NiceXWPFDocument)
  6. Zabbx6.0(学习笔记)
  7. 力扣417题太平洋大西洋水流问题
  8. halcon改变图像大小
  9. Jira实战 | 界面管理策略
  10. 2015年中国最具竞争力机器人控制器企业10强