• react 使用WEB3.0控件开发包 V3.0接入海康威视摄像头


    1、下载官方安装包:

    2、安装官方插件

    3、引入文件

    在public/index 中引入监控依赖,这三个文件可以在下载的官方demo中找到

     4、react 中使用

    1. useEffect(() => {
    2. const ipInfo = :['192.168.xxxx'];
    3. //初始化摄像头
    4. const WebVideoCtrl = window.WebVideoCtrl;
    5. const videoInitInfo = {
    6. WebVideoCtrl,
    7. iWndowType: 2,
    8. divPlugin: "divPlugin", //这里要和放视频的div的id一样
    9. ipInfo,
    10. };
    11. initVideoPlugin(videoInitInfo)
    12. //在退出页面时要调用stop方法
    13. return () => {
    14. for (let i = 0; i < ipInfo?.length; i++) {
    15. const loginInfo = ipInfo[i];
    16. const szDeviceIdentify = loginInfo.szIP + "_" + loginInfo.szPort;
    17. stopVideoPlay(WebVideoCtrl, szDeviceIdentify, i);
    18. }
    19. };
    20. }, []);
    21. <div id="divPlugin" style={{ width: "520px", height: "240px" }}>div>

     5、下面是封装好的海康威视的方法

    1. export function initVideoPlugin(videoInfo) {
    2. const { WebVideoCtrl, iWndowType, divPlugin, ipInfo } = videoInfo;
    3. WebVideoCtrl.I_InitPlugin({
    4. bWndFull: true, //是否支持单窗口双击全屏,默认支持 true:支持 false:不支持
    5. iWndowType,
    6. cbInitPluginComplete: async function () {
    7. await WebVideoCtrl.I_InsertOBJECTPlugin(divPlugin);
    8. for (let i = 0; i < ipInfo.length; i++) {
    9. const loginInfo = ipInfo[i];
    10. login(WebVideoCtrl, loginInfo, i)
    11. }
    12. }
    13. });
    14. }
    15. function login(WebVideoCtrl, loginInfo, i) {
    16. let { szIP, szPort, szUsername, szPassword } = loginInfo;
    17. const szDeviceIdentify = szIP + "_" + szPort;
    18. WebVideoCtrl.I_Login(szIP, 1, szPort, szUsername, szPassword, {
    19. timeout: 3000,
    20. async: false,
    21. success: function (xmlDoc) {
    22. console.log(szDeviceIdentify + " 登录成功!", xmlDoc);
    23. setTimeout(function () {
    24. getChannelInfo(WebVideoCtrl, szDeviceIdentify);
    25. }, 100);
    26. setTimeout(function () {
    27. clickStartRealPlay(WebVideoCtrl, szDeviceIdentify, i)
    28. }, 300);
    29. },
    30. error: function (oError) {
    31. console.log(szDeviceIdentify + " 登录失败!", oError.errorCode, oError.errorMsg);
    32. }
    33. });
    34. }
    35. // 获取通道
    36. function getChannelInfo(WebVideoCtrl, szDeviceIdentify) {
    37. if ("" == szDeviceIdentify) {
    38. return;
    39. }
    40. // 模拟通道
    41. WebVideoCtrl.I_GetAnalogChannelInfo(szDeviceIdentify, {
    42. async: false,
    43. success: function (xmlDoc) {
    44. console.log(szDeviceIdentify + " 获取模拟通道成功!");
    45. },
    46. error: function () {
    47. console.log(szDeviceIdentify + " 获取模拟通道失败!");
    48. }
    49. });
    50. }
    51. // 开始预览
    52. function clickStartRealPlay(WebVideoCtrl, szDeviceIdentify, g_iWndIndex) {
    53. const oWndInfo = WebVideoCtrl.I_GetWindowStatus(g_iWndIndex)
    54. if (oWndInfo != null) {// 已经在播放了,先停止
    55. WebVideoCtrl.I_Stop();
    56. }
    57. if (null == szDeviceIdentify) {
    58. return;
    59. }
    60. WebVideoCtrl.I_StartRealPlay(szDeviceIdentify, {
    61. iStreamType: 1,
    62. iWndIndex: g_iWndIndex,
    63. iChannelID: 1,
    64. bZeroChannel: false,
    65. success: function () {
    66. console.log("开始预览成功");
    67. },
    68. error: function (status, xmlDoc) {
    69. console.log("开始预览失败111 ", status, xmlDoc);
    70. if (403 === status) {
    71. console.log("浏览器不支持Websocket取流!请更换ie浏览器");
    72. } else {
    73. console.log("开始预览失败 ", status, xmlDoc);
    74. }
    75. }
    76. });
    77. }
    78. export function stopVideoPlay(WebVideoCtrl, szDeviceIdentify, i) {
    79. if (!WebVideoCtrl) {
    80. return;
    81. }
    82. console.log('开始关闭摄像头');
    83. WebVideoCtrl.I_StopAllPlay({
    84. success: () => {
    85. console.log('停止成功')
    86. }
    87. });
    88. WebVideoCtrl.I_Logout(szDeviceIdentify);
    89. setTimeout(function () {
    90. WebVideoCtrl.I_DestroyPlugin()
    91. }, 100)
    92. }

  • 相关阅读:
    uni-app 5小时快速入门 4 项目运行
    Java的深浅拷贝认识
    Docker 学习
    《QDebug 2022年11月》
    SDL2 简明教程(二):创建一个空的窗口
    【寒武纪(3)】媒体处理系统的系统控制、视频输入和后处理子系统
    SQL注入-下篇
    下载安全证书到jdk中的cacerts证书库
    windows环境配置
    MobPush 厂商通道SDK集成指南
  • 原文地址:https://blog.csdn.net/qq_36770474/article/details/137967806