Skip to content
Turn any webcam into an IP camera
Go Shell Dockerfile
Branch: master
Clone or download
Latest commit be5863d Oct 6, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
camera Format imports Oct 6, 2019
cmd/cam2ip Update version Oct 6, 2019
handlers Allow HEAD Oct 6, 2019
image Change websocket library Oct 5, 2019
reader New release Jan 27, 2018
server Add timestamp option Oct 6, 2019
video Rename cv3 -> cv4 Oct 5, 2019
AUTHORS Initial commit Oct 3, 2017
COPYING Initial commit Oct 3, 2017
Dockerfile Update Dockerfile Oct 6, 2019
README.md Add darwin build Oct 6, 2019
go.mod Add timestamp option Oct 6, 2019
go.sum Add timestamp option Oct 6, 2019
make.bash Add darwin build Oct 6, 2019

README.md

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

Build tags

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

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]
  -video-file string
	Use video file instead of camera [CAM2IP_VIDEO_FILE]
  -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
You can’t perform that action at this time.