C# 实现海康摄像头在任意浏览器中预览
两周以来一直研究海康视频在谷歌、火狐等浏览器中的显示问题。在今天终于有了一点小心得。发表出来,希望有问题或者其他建议的老师积极给我建议。
在海康浏览器的平台中,因为他本身只支持在IE或者IE内核中显示,这种问题不能根本性的解决在多浏览器里面的问题,我在网上查找了IE-Tab在谷歌浏览器中显示,但是由于需要用户手动切换浏览模式,所以说用起来不是特别方便。后面研究了一下,可以通过海康PlantFormSdk+TCP协议+Websocket的方式进行推流,在浏览器中通过img显示base64的方式显示视频,通过以上方式基本上可以实现视频同步预览,具体思路如下。
1.服务器端通过使用winform监听方式监听浏览器端连接预览的摄像头,如果为同一个摄像头时,则通过字典的方式对改连接和IP及Socket进行保存,当不同的连接同一个摄像头的时候,通过字典保存多个TCP连接。
2.推流:推流方式采用TCP协议的方式,当前我才用的是每隔500ms,对显示的picturebox进行截屏,在截屏之后,通过代码将截屏的bitmap转换成base64字符串流,通过TCP协议推送当前摄像头连接的网络地址。
3.接受:在web端通过websocket进行接受传输的base64字符串,因为当前比较长,所以我才用的手动分包的方式进行传输。
图中分别表示三个单例类,一个是网络连接、一个是当前连接及当前运行的线程。
public static void SendMessage(string obj, string data)
{
var max = data.Length % 100 == 0 ? data.Length / 100 : data.Length / 100 + 1;
try
{
int i;
for (i = 0; i < max; i++)
{
string send;
if (i == 0)
{
send = $"0,{data.Length}," + data.Substring(0, 100);
}
else if (i == max - 1 && data.Length % 100 != 0)
{
send = $"{i},0," + data.Substring(i * 100, data.Length % 100);
}
else
{
send = $"{i},0," + data.Substring(i * 100, 100);
}
byte[] msgBuffer = PackageServerData(send);
foreach (Session se in SingleConnect.GetInstance()[obj].Select(t => t.Session))
{
if (se.SockeClient.Connected)
{
try
{
se.SockeClient.Send(msgBuffer, msgBuffer.Length, SocketFlags.None);
}
catch (Exception ex)
{
LogHelper.WriteError("发送数据异常", ex);
}
}
}
}
}
catch (Exception ex)
{
LogHelper.WriteError("相应数据异常", ex);
}
}
这段代码为相应的发送代码。
调用发送代码的截图方法。
以上为实时监控图,第一张图为监听的连接,第二张图是在谷歌浏览器中显示的图,第三张图是在winform中显示的图。
文章水平不是很高,希望对大家有所帮助。如果有问题可以直接私聊我
C# 实现海康摄像头在任意浏览器中预览相关推荐
- C++ 海康摄像头实现录像文件下载,预览,裸码获取
前言示例代码链接: 示例代码官方网址 预览 方式一(由SDK实现解码显示)#include <stdio.h>#include <iostream>#include " ...
- Qt Creator在浏览器中预览
Qt Creator在浏览器中预览 在浏览器中预览 在浏览器中预览 Qt Design Viewer是在您的Web浏览器中运行的QML查看器.这意味着您可以在台式机和移动设备上的最广泛使用的Web浏览 ...
- 浏览器预览html网址,在浏览器中预览网页
在浏览器中预览网页 10/11/2017 本文内容 为了便于在 Microsoft Expression Web 中设计网页,您可以在不同 Web 浏览器和不同大小的窗口中预览网页的外观.可以选择的窗 ...
- Java后台实现pdf文件在浏览器中预览
Java后台实现pdf文件在浏览器中预览 放在服务器的pdf文件不能通过完整路径访问,想要实现的效果是浏览器访问后台接口可以预览pdf文件,暂时是把pdf文件放在本地测试 通过输出流的方式将pdf文件 ...
- 浏览器中预览文件(pdf、图片文件)
本文讲解在浏览器中预览PEF文件或图片文件,思路如下: 使用window.fetch请求文件资源,生成blob对象,创建此blob对象的url,之后在浏览器中显示预览,下面是具体实现代码: 1.单击& ...
- 海康摄像头--通过WEB浏览器方式查看
一.本地WEB方式查看 在浏览器下(当前使用的是WIN10 Edge)直接输入IP地址登录,默认地址http://192.168.1.64,然后输入账号密码. 如果修改过摄像头IP和端口则按照修改后的 ...
- 海康视频下载,以及实时视频预览
一,前言 公司一项目需要拿到海康刻录机里面某时间段的视频去刻录.遇到问题第一时间看官网有么有demo可以套用,哎,一言难尽,打开官网看到文档后,感觉长得不像,就没继续看了,不知道怎么弄的我,迷茫着在网 ...
- 视频联网云平台EasyCVR集成海康EHome协议:Ehome协议预览流程
之前我们讲了EasyCVR视频平台集成了海康EHome协议系统配置,EasyCVR集成海康EHome私有协议内容繁杂琐碎,测试内容众多,所以我们特地开辟一个系列,如果大家有兴趣,可以翻阅以往的博客了解 ...
- 文档预览:在浏览器中预览查看 Office 文档
您的网站或博客上是否有希望读者查看的 Office 文档,即使他们没有安装 Office?您愿意在下载之前查看文档吗?要为您的观众提供更好的体验,请尝试使用 Office Web 查看器. 什么是 O ...
最新文章
- 14 类编程题解法总结
- JAVA实现矩形覆盖问题(《剑指offer》)
- id_Tech5_challenges--siggraph09
- find server/ -type d|xargs -I {} echo mkdir /root/{}
- C ++定义QML类型
- boost install on prinse 12.04 ubuntu
- c++ char* 改变长度重新赋值_[C/C++] 2 :分析下列代码有什么问题?
- Java 算法 寂寞的数
- 【Node】—接收参数 插入数据 实现注册功能
- 使用脚本 Nodesource快速安装nodejs环境
- FFmpeg音视频同步的问题
- 记忆减退之----LM1117 电路连接图
- Texture tiling
- peewee mysql_Peewee、MySQL和INSERT忽略
- 银行利率bp是什么意思,利率加点bp怎么计算
- android自适应屏幕方向,Android 屏幕自适应方向尺寸与分辨率-Fun言
- 二次曲面的绘制函数(一)
- 小游戏——扫雷(可以标记)
- Checkra1n越狱更新0.12.4版本,支持iOS14.7.1越狱
- SQL掌握:添加、修改、删除、查询4个句式