Giter VIP home page Giter VIP logo

ozonebase's Introduction

Ozone - state of the art framework for developing security and surveillance solutions for the Home, Commercial and more.

First an example:

Problem Statement 1: How about we tap into two public RTSP cameras, and display them on a browser (no RTSP support), run live motion detection on them, show motion frames and, yeah, while we are at it, stitch the two camera images and their live debug frames into a 4x4 muxed image?

Problem Statement 2: Oh yeah, in 10 minutes.

Answer: Tap on the image below to see a recording of a live video

ozone server video

What's happening here is we wrote a simple server and client app. The server app connects to two traffic cameras, converts RTSP to MJPEG so it can show on the browser. It also creates motion detection streams and a stitched matrix frame to show you it rocks. And in less that 22 lines of core code.

The client (HTML) code that renders the images above: Full code here

<!-- REPLACE THE IP ADDRESS WITH YOUR SERVER IP -->
<html>
<body>
  <table>
    <h1>Example of the amazing simplicity of ozone server framework<h1>
    <h5>Source code:<a href="https://github.com/ozonesecurity/ozonebase/blob/master/server/src/examples/starter_example.cpp">here</a></h5>
    <th>Live Feeds, 2 traffic cameras</th>
     <tr>
        <!-- live frames -->
        <td>
            <img src="http://192.168.1.224:9292/watchcam1/cam1" />
        </td>
        <td>
            <img src="http://192.168.1.224:9292/watchcam2/cam2" />
        </td>
     </tr>
     <!-- debug frames -->
     <tr>
        <td>
          Modect on cam1:<br/>
          <img src="http://192.168.1.224:9292/debug/modectcam1" />
        </td>
        <td>
          Modect on cam2:<br/>
          <img src="http://192.168.1.224:9292/debug/modectcam2" />
        </td>
    </tr>
  </table>
 
<h2> Muxed 4x4 stream of camera 1 and 2 and its debug frames</h2>
 <img src="http://192.168.1.224:9292/debug/matrixcammux" />


</body>
</html>

The servercode that generates the images above: Full code here

	Application app;

   	// Two RTSP sources 
    NetworkAVInput cam1( "cam1", "rtsp://170.93.143.139:1935/rtplive/0b01b57900060075004d823633235daa" );
    NetworkAVInput cam2("cam2","rtsp://170.93.143.139:1935/rtplive/e0ffa81e00a200ab0050fa36c4235c0a");
    app.addThread( &cam1 );
    app.addThread( &cam2 );

	// motion detect for cam1
	MotionDetector motionDetector1( "modectcam1" );
  	motionDetector1.registerProvider( cam1 );
   	app.addThread( &motionDetector1 );

	// motion detect for cam1
	MotionDetector motionDetector2( "modectcam2" );
  	motionDetector2.registerProvider( cam2 );
   	app.addThread( &motionDetector2 );

	// Let's make a mux/stitched handler for cam1 and cam2 and its debugs
	MatrixVideo matrixVideo( "matrixcammux", PIX_FMT_YUV420P, 640, 480, FrameRate( 1, 10 ), 2, 2 );
   	matrixVideo.registerProvider( cam1 );
   	matrixVideo.registerProvider( *motionDetector1.deltaImageSlave() );
   	matrixVideo.registerProvider( cam2 );
   	matrixVideo.registerProvider( *motionDetector2.deltaImageSlave() );
   	app.addThread( &matrixVideo );

	Listener listener;
    app.addThread( &listener );

    HttpController httpController( "watch", 9292 );
    httpController.addStream("watchcam1",cam1);
    httpController.addStream("watchcam2",cam2);

	httpController.addStream( "file", cam1 );
   	httpController.addStream( "debug", SlaveVideo::cClass() );
   	httpController.addStream( "debug", matrixVideo );
   	httpController.addStream( "debug", motionDetector1 );
   	httpController.addStream( "debug", motionDetector2 );
	
    listener.addController( &httpController );

    app.run();

Excited? Want to know more?

Ozone is is rockstar framework to make development of custom security and surveillance products much easier than today. Completely re-written and more modern in architecture. Ozone is created by the original developer of ZoneMinder, Phil Coombes.

Ozone comprises of:

  • server - base framework for developing security and surveilllance servers (like ZoneMinder, for example)
  • client - base framework for developing mobile apps for remote control (like zmNinja, for example)
  • examples - reference implementations to get you started

What is the goal?

Ozone a more modern take and has been re-architected to serve as a UI-less framework at its core. We expect this to be the core framework for developing full fledged apps on top. Our hope is that this will form the base of many security solutions - developers can use this library to accelerate their own vision of security software. Over time, we will also offer our own fully running UI enabled version running over NodeJS/Angular.

Intended audience

We expect OEMs, ISVs and 3rd party developers to use this library to build their own solutons powered by us. It is not an end consumer product, unlike V1.

As of today, there is no roadmap to merge this with version 1. Version 1 has a seperate goal from Version 2 and we think its best to leave it that way for now.

Who is developing and maintaining Ozone?

The Ozonebase server framework is developed by Philip Coombes, the original developer of ZoneMinder. The codebase will be maintained by Phil and Pliable Pixels and other key contributors who will be added soon.

Ozonebase part of a solution suite being developed by Ozone Networks. The full solution suite will eventually include a server framework (this code), a mobile framework for white-labelled apps and a reference solution using them.

Ozonebase is dual-licensed. Please refer to the LICENSING file for details.

ozonebase's People

Contributors

knight-of-ni avatar pliablepixels avatar web2wire avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.