两周以来一直研究海康视频在谷歌、火狐等浏览器中的显示问题。在今天终于有了一点小心得。发表出来,希望有问题或者其他建议的老师积极给我建议。

在海康浏览器的平台中,因为他本身只支持在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# 实现海康摄像头在任意浏览器中预览相关推荐

  1. C++ 海康摄像头实现录像文件下载,预览,裸码获取

    前言示例代码链接: 示例代码官方网址 预览 方式一(由SDK实现解码显示)#include <stdio.h>#include <iostream>#include " ...

  2. Qt Creator在浏览器中预览

    Qt Creator在浏览器中预览 在浏览器中预览 在浏览器中预览 Qt Design Viewer是在您的Web浏览器中运行的QML查看器.这意味着您可以在台式机和移动设备上的最广泛使用的Web浏览 ...

  3. 浏览器预览html网址,在浏览器中预览网页

    在浏览器中预览网页 10/11/2017 本文内容 为了便于在 Microsoft Expression Web 中设计网页,您可以在不同 Web 浏览器和不同大小的窗口中预览网页的外观.可以选择的窗 ...

  4. Java后台实现pdf文件在浏览器中预览

    Java后台实现pdf文件在浏览器中预览 放在服务器的pdf文件不能通过完整路径访问,想要实现的效果是浏览器访问后台接口可以预览pdf文件,暂时是把pdf文件放在本地测试 通过输出流的方式将pdf文件 ...

  5. 浏览器中预览文件(pdf、图片文件)

    本文讲解在浏览器中预览PEF文件或图片文件,思路如下: 使用window.fetch请求文件资源,生成blob对象,创建此blob对象的url,之后在浏览器中显示预览,下面是具体实现代码: 1.单击& ...

  6. 海康摄像头--通过WEB浏览器方式查看

    一.本地WEB方式查看 在浏览器下(当前使用的是WIN10 Edge)直接输入IP地址登录,默认地址http://192.168.1.64,然后输入账号密码. 如果修改过摄像头IP和端口则按照修改后的 ...

  7. 海康视频下载,以及实时视频预览

    一,前言 公司一项目需要拿到海康刻录机里面某时间段的视频去刻录.遇到问题第一时间看官网有么有demo可以套用,哎,一言难尽,打开官网看到文档后,感觉长得不像,就没继续看了,不知道怎么弄的我,迷茫着在网 ...

  8. 视频联网云平台EasyCVR集成海康EHome协议:Ehome协议预览流程

    之前我们讲了EasyCVR视频平台集成了海康EHome协议系统配置,EasyCVR集成海康EHome私有协议内容繁杂琐碎,测试内容众多,所以我们特地开辟一个系列,如果大家有兴趣,可以翻阅以往的博客了解 ...

  9. 文档预览:在浏览器中预览查看 Office 文档

    您的网站或博客上是否有希望读者查看的 Office 文档,即使他们没有安装 Office?您愿意在下载之前查看文档吗?要为您的观众提供更好的体验,请尝试使用 Office Web 查看器. 什么是 O ...

最新文章

  1. 14 类编程题解法总结
  2. JAVA实现矩形覆盖问题(《剑指offer》)
  3. id_Tech5_challenges--siggraph09
  4. find server/ -type d|xargs -I {} echo mkdir /root/{}
  5. C ++定义QML类型
  6. boost install on prinse 12.04 ubuntu
  7. c++ char* 改变长度重新赋值_[C/C++] 2 :分析下列代码有什么问题?
  8. Java 算法 寂寞的数
  9. 【Node】—接收参数 插入数据 实现注册功能
  10. 使用脚本 Nodesource快速安装nodejs环境
  11. FFmpeg音视频同步的问题
  12. 记忆减退之----LM1117 电路连接图
  13. Texture tiling
  14. peewee mysql_Peewee、MySQL和INSERT忽略
  15. 银行利率bp是什么意思,利率加点bp怎么计算
  16. android自适应屏幕方向,Android 屏幕自适应方向尺寸与分辨率-Fun言
  17. 二次曲面的绘制函数(一)
  18. 小游戏——扫雷(可以标记)
  19. Checkra1n越狱更新0.12.4版本,支持iOS14.7.1越狱
  20. SQL掌握:添加、修改、删除、查询4个句式

热门文章

  1. 笔记本电脑跌到地上,硬盘不认盘咔咔响数据恢复
  2. 50件事将归咎于油价上涨
  3. 成为一个优秀的测试工程师需要具备哪些知识和经验?
  4. 2021年山东省安全员C证考试报名及山东省安全员C证考试试卷
  5. 湖北工业大学图书馆无线网连接
  6. WEB端和微信小程序端的文档文件在线预览方法
  7. 【字符串函数】strcat的使用及原理
  8. 常见的数据结构总结(8种)
  9. 静态IP是什么意思?和动态IP 有什么区别
  10. Kubernetes、k8s从入门到实战