streamera

Term Project of Computer Networking

streamera is a Stream Camera based on TCP, which contains client mode and server mode.

Features

  • Client Mode & Server Mode

    • Client Mode

      Capture camera video and send stream to server side.

    • Server Mode

      Receive tcp stream and display the video to screen, along with network speed and ping.

  • Connection-Error Handle

    • Client Mode

      streamera client will try to reconnect to the server every 3 second when TCP connection is lost. And the maximum bufferd size is 180 frames, which is probably up to 6 seconds of the video.

    • Server Mode

      streamera server will continuously serve the incoming tcp connection, but the limit is set up to 1 client at the same time, which means only one video window will be shown during streamera server running.

      To be simple, When current TCP connnection is lost, the server will wait for the next incoming connection and start over the video streaming.

  • Speed & Ping Monitoring

    Draw current network speed and ping directly to the video frame.

  • Thread Safe

    streamera uses golang as the main programming language: goroutine, channel and mutex are widely used in streamera. Thus streamera has high profermance and stability while keeping thread safe.

How to Install

streamera requires OpenCV as computer vision library and GoCV as golang bindings.

MacOS

Install OpenCV, pkg-config

brew install opencv pkg-config

Install GoCV

go get -u -d gocv.io/x/gocv

Done!

Linux or Windows

Please check Getting Start :: GoCV for more information.

Usage

Clone this repo:

git clone [email protected]:bipy/streamera.git

Build streamera:

cd streamera
go build

To run as server mode:

./streamera -m server

To run as client mode:

./streamera -m client

About

Licensed under the Apache 2.0 license. Copyright 2021 bipy.

Logo generated by GopherizeMe

GitHub

https://github.com/bipy/streamera