多重访问安全摄像头

时间:2013-10-30 13:37:31

标签: authentication camera video-streaming ip-camera

有些系统将安全摄像头连接到数据中心(工作站计算机,人工操作员不断观察)。我只是在谈论普通的安全系统。

此类架构中有4种可能的情况:

1)多台摄像机 - 单一数据中心, 2)多个摄像头 - 多个数据中心, 3)单摄像头 - 单个数据中心和 4)单摄像头 - 多个数据中心。

假设摄像机仅具有云台 - 变焦+实时视频流功能。 对于“案例2”系统,存在一些问题: - 当两个数据中心想要同时访问同一个摄像机时会发生什么。 - 数据中心之间是否有任何优先级层次结构? - 操作之间是否存在任何优先级层次结构(例如,Pan-tilt优先于版本查询) 。 。

我认为这些问题必须在安全系统开发人员中如此常见,是否存在任何算法,规范,书籍或LIBRARY实现 - 以便多次访问安全摄像头系统?

目前我正在研究ONVIF规范,但我无法找到任何相关的定义。

我知道我的问题太笼统,但任何帮助都会变得很方便。

1 个答案:

答案 0 :(得分:0)

尝试显示不同的相机

  

                                   

  <title>Video Camera</title>

  <script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"
     
    

  
  <style type="text/css" media="screen">
    video {
      border:1px solid gray;
    }
  </style>   </head>   <body>
<script>
  if (!MediaStreamTrack) document.body.innerHTML = '<h1>Incompatible Browser Detected. Try <strong
     

style =“color:red;”&gt; Chrome Canary代替。';

  var videoSources = [];

  MediaStreamTrack.getSources(function(media_sources) {
    console.log(media_sources);
    alert('media_sources : '+media_sources);
    media_sources.forEach(function(media_source){
      if (media_source.kind === 'video') {
        videoSources.push(media_source);
      }
    });

    getMediaSource(videoSources);
  });

  var get_and_show_media = function(id) {
    var constraints = {};
    constraints.video = {
      optional: [{ sourceId: id}]
    };

    navigator.webkitGetUserMedia(constraints, function(stream) {
      console.log('webkitGetUserMedia');
      console.log(constraints);
      console.log(stream);

      var mediaElement = document.createElement('video');
      mediaElement.src = window.URL.createObjectURL(stream);
      document.body.appendChild(mediaElement);
      mediaElement.controls = true;
      mediaElement.play();

    }, function (e) 
    {
      alert('Hii');  
      document.body.appendChild(document.createElement('hr'));
      var strong = document.createElement('strong');
      strong.innerHTML = JSON.stringify(e);
      alert('strong.innerHTML : '+strong.innerHTML);
      document.body.appendChild(strong);
    });
  };

  var getMediaSource = function(media) {
    console.log(media);
    media.forEach(function(media_source) {
      if (!media_source) return;

      if (media_source.kind === 'video') 
      {
        // add buttons for each media item
        var button = $('<input/>', {id: media_source.id, value:media_source.id, type:'submit'});
        $("body").append(button);
        // show video on click
        $(document).on("click", "#"+media_source.id, function(e){
          console.log(e);
          console.log(media_source.id);
          get_and_show_media(media_source.id);
        });
      }
    });
  }
</script>   </body> </html>