摄像头在H5的实时播放功能实现历程

2023-11-17

一、问题解决的路程

1.需求来源

                因项目发展需求,需要在3D地图上进行实时摄像头监控展示,3D地图是基于浏览器H5页面展示的。在H5页面实时播放摄像头监控就需要可以直接拿到取流地址进行直接播放,以下各大摄像头产商取流方式

海康威视
默认IP地址:192.168.1.64/DHCP 用户名admin 密码自己设
端口:“HTTP 端口”(默认为 80)、“RTSP 端口”(默认为 554)、“HTTPS 端 口”(默认 443)和“服务端口”(默认 8000),ONVIF端口 80。
RTSP地址:rtsp://[username]:[password]@[ip]:[port]/[codec]/[channel]/[subtype]/av_stream
说明:
username: 用户名。例如admin。
password: 密码。例如12345。
ip: 为设备IP。例如 192.0.0.64。
port: 端口号默认为554,若为默认可不填写。
codec:有h264、MPEG-4、mpeg4这几种。
channel: 通道号,起始为1。例如通道1,则为ch1。
subtype: 码流类型,主码流为main,辅码流为sub。
例如,请求海康摄像机通道1的主码流,Url如下
主码流:
rtsp://admin:12345@192.0.0.64:554/h264/ch1/main/av_stream
子码流:
rtsp://admin:12345@192.0.0.64/mpeg4/ch1/sub/av_stream

大华
默认IP地址:192.168.1.108 用户名/密码:admin/admin
端口:TCP 端口 37777/UDP 端口 37778/http 端口 80/RTSP 端口号默认为 554/HTTPs 443/ONVIF 功能默认为关闭,端口80
RTSP地址:rtsp://username:password@ip:port/cam/realmonitor?channel=1&subtype=0
说明:
username: 用户名。例如admin。
password: 密码。例如admin。
ip: 为设备IP。例如 10.7.8.122。
port: 端口号默认为554,若为默认可不填写。
channel: 通道号,起始为1。例如通道2,则为channel=2。
subtype: 码流类型,主码流为0(即subtype=0),辅码流为1(即subtype=1)。
例如,请求某设备的通道2的辅码流,Url如下
rtsp://admin:admin@10.12.4.84:554/cam/realmonitor?channel=2&subtype=1

雄迈/巨峰
默认IP地址:192.168.1.10 用户名admin 密码空
端口:TCP端口:34567 和 HTTP端口:80,onvif端口是8899
RTSP地址:rtsp://10.6.3.57:554/user=admin&password=&channel=1&stream=0.sdp?
10.6.3.57这个是被连接的设备的IP
554这个是RTSP服务的端口号,可以在设备的网络服务里面更改
user=admin这个是设备的登录用户名
password= 密码空
channel=1 第一通道
stream=0.sdp?主码流
stream=1.sdp?副码流
图片抓拍地址:http://ip/webcapture.jpg?command=snap&channel=1

天视通
默认IP地址:192.168.0.123 用户名admin 密码123456
端口:http端口80 数据端口8091 RTSP端口554 ONVIF端口 80
RTSP地址:主码流地址:rtsp://192.168.0.123:554/mpeg4
子码流地址:rtsp://192.168.0.123:554/mpeg4cif
需要入密码的地址: 主码流 rtsp://admin:123456@192.168.0.123:554/mpeg4
子码流 rtsp://admin:123456@192.168.0.123:554/mpeg4cif
图片抓拍地址:http://ip/snapshot.cgi

中维/尚维
默认IP地址:DHCP 默认用户名admin 默认密码 空
RTSP地址:rtsp://0.0.0.0:8554/live1.264(次码流)
rtsp://0.0.0.0:8554/live0.264 (主码流)

九安
RTSP地址:rtsp://IP:port(website port)/ch0_0.264(主码流)
rtsp://IP:port(website port)/ch0_1.264(子码流)

技威/YOOSEE
默认IP地址:DHCP 用户名admin 密码123
RTSP地址:主码流:rtsp://IPadr:554/onvif1
次码流:rtsp://IPadr:554/onvif2
onvif端口是5000
设备发现的端口是3702

V380
默认IP地址:DHCP 用户名admin 密码空/admin
onvif端口8899
RTSP地址:主码流rtsp://ip//live/ch00_1
子码流rtsp://ip//live/ch00_0

宇视
默认IP地址: 192.168.0.13/DHCP 默认用户名 admin 和默认密码 123456
端口:HTTP 80/RTSP 554/HTTPS 110(443)/onvif端口 80
RTSP地址:rtsp://用户名:密码@ip:端口号/video123 123对应3个码流

天地伟业
默认IP地址:192.168.1.2 用户名“Admin”、密码“1111”
onvif端口号“8080”
RTSP地址:rtsp://192.168.1.2

巨龙/JVT
默认IP地址:192.168.1.88 默认用户名 admin 默认密码admin
RTSP地址:
主码流地址:rtsp://IP地址/av0_0
次码流地址:rtsp://IP地址/av0_1
onvif端口 2000
图片抓拍地址:http://ip/capture/webCapture.jpg?channel=1&FTpsend=0&checkinfo=0

这里我们会发现,取流地址是RTSP协议方式;该协议比较特殊,H5播放器没有找到能直接播放该协议的视频流;以下展示腾讯超级播放器支持的视频流格式;

视频协议 用途 URL 地址格式 PC 浏览器 移动浏览器
WebRTC 直播 webrtc://xxx.liveplay.myqcloud.com/live/xxx 支持 支持
HLS
(M3U8)
直播 http://xxx.liveplay.myqcloud.com/xxx.m3u8 支持 支持
点播 http://xxx.vod.myqcloud.com/xxx.m3u8 支持 支持
FLV 直播 http://xxx.liveplay.myqcloud.com/xxx.flv 支持 不支持
点播 http://xxx.vod.myqcloud.com/xxx.flv 支持 不支持
RTMP 直播 rtmp://xxx.liveplay.myqcloud.com/live/xxx 支持 不支持

既然播放器不支持,那就需要视频流转换,经过调研和实践,尝试了以下方式,WebRTC、HLS、FLV、RTMP。附带:流媒体协议介绍

二、WebRTC

WebRTC的产品很多,这里推荐:kurento-media-server,大家可以去他的官网看一下介绍。

在公网部署需要打洞服务器配合使用,

安装教程和打洞服务器配合dockerfiledocker hup

三、HLS、RTMP 、FLV

参考资料:

FFmpeg教程(超级详细版)、Nginx hls流媒体服务器

Nginx集成rtmp模块

Nginx集成rtmp+flv模块

待续。。。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

摄像头在H5的实时播放功能实现历程 的相关文章

随机推荐

  • elasticsearch query 要点

    查看分析效果 godproduct analyze analyzer ik smart text 雅诗兰黛眼霜 简单filter查询 POST myindex mytype search query bool filter term use
  • 常用Web安全扫描工具合集

    初入门时 喜欢将目标站点直接丢扫描器 慢慢等扫描结果 极度依赖Web扫描器 而有一些漏洞高手 善于运用运用各种工具但并不依赖工具 经常可以找到扫描工具发现不了的漏洞 一款好用的Web扫描器对于白帽子来说 就像剑客手中的剑一样重要 那么 如何
  • python os.walk不递归_python-os.walk目录递归

    递归删除文件或目录 递归 os walk 删除目录 shutil rmtree 1 coding UTF 8 2 importos path sys shutil3 4 path H test 5 6 7 for root dirs fil
  • 敏捷之旅大连站2012第一次筹备会议记录

    昨天召集了敏捷之旅大连站的几位组织者 一起开了一个筹备的讨论会 简单记录如下 1 地点的讨论 目前有几个地点备选 东软会议中心 腾飞软件园的会议厅 中荷人寿会议室以及酒店 综合各种因素 包括地点的交通 午餐的方便程度 场地的大小 音响和投影
  • 2.C++设计模式 - 观察者模式

    class Observer public 构造 Observer 析构 virtual Observer 更新 virtual void updata class Server private 观察者链表 list
  • 微信多客服如何设置快捷回复(高级玩法总结)

    在微信生态 使用公众号小程序等 同时每天会产生很多重复的咨询 如何在微信上实现更高效的快捷回复 把常用语 回答文档等便捷化 标准化对答 避免以往的复制粘贴工作方式 是我们不得不面对的一个问题 应用内回复 全应用回复 个人回复 公共回复 快捷
  • Hadoop - wordCount 实例

    hadoop 创建文件夹存放需要被统计的文件 hadoop fs mkdir usr 创建单子文件并写入内容 可在网上找几篇英文文章写入 vim word txt 上传到 hdfs hadoop fs put word txt usr 利用
  • C#开发学习~~~“未能找到类型或命名空间名称“XXXX”(是否缺少 using 指令或程序集引用?)”

    引言 在 C 高阶编程 中文第10版 的2 2 4节中 有这样一段描述 看到这段话 我简单的理解为 只要在程序开始用using语句声明名称空间 就可以在当前名称空间使用声明的这个名称空间中的类和方法 但实践证明我的理解是有些错误的T0T 问
  • [坑]拦截器返回response.getWrite().println方法返回数据不全

    在SpringBoot项目中 前端ajax请求后端 拦截器进行登录拦截判断 如果超时返回false 则给前端返回一段json字符串 private static void returnJson HttpServletResponse res
  • C++ cin 实现循环读入

    习惯了使用while scanf d x 来实现循环读入 但是有时候使用泛型编程的时候就必须使用C 中的cin 但是当我想要实现循环读入的时候却发现有些困难 我们可以看一下下面这个简单的例子 include
  • 使用boost::units库进行信息单位转换的C++示例程序

    使用boost units库进行信息单位转换的C 示例程序 include
  • 电视机尺寸与观看距离

    电视机尺寸是指电视机屏幕对角线的长度 以英寸为单位 1英寸 2 54厘米 而且目前来看大多数液晶电视的标准屏幕比已经变成了宽的是16 9 根据勾股定理 对角线的长度是 337 根号337 开放得出 屏幕高度与对角线的比值就是9 337 一般
  • 【新版】系统架构设计师 - 案例分析 - 信息安全

    个人总结 仅供参考 欢迎加好友一起讨论 文章目录 架构 案例分析 信息安全 安全架构 安全模型 分类 BLP模型 Biba模型 Chinese Wall模型 信息安全整体架构设计 WPDRRC模型 各模型安全防范功能 网络安全体系架构设计
  • Linux中创建文件夹,删除文件夹

    Linux中创建目录 mkdir 文件夹 比如 mkdir test 删除文件夹 rm rf 文件夹 比如 rm rf soft vi强制不保存退出命令 q
  • const 定义数组问题

    const keysArr array aaa gt 11111 bbb gt 22222 ccc gt 33333 ddd gt 44444 上面是标准的错误格式 PHP编译不会报详细错误信息 500 查找半天的代码问题 一直未发现错误
  • 解决Jenkins构建前端时node-sass的.node文件下载报错问题的一种方案

    问题背景 公司的npm仓库未跟外网联通 为什么不联通 我也好鸡儿纳闷 使用Jenkins构建前端时 会在下载node sass的 node时报错 默认情况下会从github上去下 node文件 当然也可以通过配置 npmrc文件指定下载路径
  • 浅析Jetty与tomcat区别

    一 Jetty介绍 1 Jetty概述 Jetty是一个开源项目 最初由Mort Bay Consulting公司创建 它的目标是提供一个快速 灵活 可嵌入的Web服务器和Servlet容器 使Java开发人员能够轻松构建高性能的Web应用
  • 如何在 Mac 上录制屏幕?mac录屏教程分享

    您可以为整个屏幕或屏幕上的选定部分录制视频 1 使用 截屏 工具栏 要查看 截屏 工具栏 请同时按下以下三个按键 Shift Command 和 5 您将看到用于录制整个屏幕 录制屏幕的选定部分或拍摄屏幕静态图像的屏幕控制项 录制整个屏幕
  • 泛型的概念

    一 什么是泛型 参数化类型 为什么要引入泛型 1 将不同类型的数据添加到Arraylist中 取出数据要使用时 要进行强制转换 还原 向下转型 2 同时在编写程序时 不会报错 无类型安全监测机制 而结果出错ClassCastExceptio
  • 摄像头在H5的实时播放功能实现历程

    一 问题解决的路程 1 需求来源 因项目发展需求 需要在3D地图上进行实时摄像头监控展示 3D地图是基于浏览器H5页面展示的 在H5页面实时播放摄像头监控就需要可以直接拿到取流地址进行直接播放 以下各大摄像头产商取流方式 海康威视 默认IP