Skip to content

gen2brain/cam2ip

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

79 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

cam2ip

Turn any webcam into an IP camera.

Example (in web browser):

http://localhost:56000/html

or

http://localhost:56000/mjpeg

You can also use apps like ffplay or vlc:

ffplay -i http://localhost:56000/mjpeg

Requirements

  • On Linux/RPi native Go V4L implementation is used to capture images.
  • On Windows Video for Windows (VfW) framework is used over win32 API.

Build tags

  • cv2 - build with OpenCV 2.x (go-opencv)
  • cv4 - build with OpenCV 4.x (gocv)
  • turbo - build with libjpeg-turbo (libjpeg-turbo) instead of native Go image/jpeg

Download

Binaries are compiled with static OpenCV/libjpeg-turbo libraries, they should just work:

Installation

go get -v github.com/gen2brain/cam2ip/cmd/cam2ip

This will install app in $GOPATH/bin/cam2ip.

Run in Docker container

docker run --device=/dev/video0:/dev/video0 -p56000:56000 -it gen2brain/cam2ip # on RPi use gen2brain/cam2ip:arm

Usage

Usage of cam2ip:
  -bind-addr string
	Bind address [CAM2IP_BIND_ADDR] (default ":56000")
  -delay int
	Delay between frames, in milliseconds [CAM2IP_DELAY] (default 10)
  -height float
	Frame height [CAM2IP_HEIGHT] (default 480)
  -htpasswd-file string
	Path to htpasswd file, if empty auth is disabled [CAM2IP_HTPASSWD_FILE]
  -index int
	Camera index [CAM2IP_INDEX]
  -nowebgl
	Disable WebGL drawing of images (html handler) [CAM2IP_NOWEBGL]
  -rotate int
	Rotate image, valid values are 90, 180, 270 [CAM2IP_ROTATE]
  -timestamp
	Draws timestamp on images [CAM2IP_TIMESTAMP]
  -width float
	Frame width [CAM2IP_WIDTH] (default 640)

Handlers

  • /html: HTML handler, frames are pushed to canvas over websocket
  • /jpeg: Static JPEG handler
  • /mjpeg: Motion JPEG, supported natively in major web browsers