actioncam / libipcamera
Go Library and command line tool for working with cheap action cameras.
|Campark||ACT76 (Xtreme 2)||v1.0 rc5||Full (tested)|
Supplying no additional command will start streaming a preview video stream to your local system.
To view the video use the
camera.sdp file and open it in a compatible player like VLC.
The stream is a RTP stream sent to Port 5220 on localhost containing H.264 data in preview resolution as AVP Type 99. Additionally it is possible to start a crude RTSP-Server that is able to serve a single client.
# Start preview streaming via RTP actioncam <Camera IP> # Start RTSP server and stream preview to connecting actioncam rtsp <Camera IP> # Use mplayer to stream a low-latency preview (ffmpeg and VLC introduce significant delay) mplayer -nocache rtsp://127.0.0.1:8554
Shooting a still picture
To shoot a still picture and save it to SD-Card run the subcommand
actioncam still <Camera IP>
To record full resolution video to SD-Card use the subcommands
# Start recording Video actioncam record <Camera IP> # Stop recording Video actioncam stop <Camera IP>
Fetch the list of files on the SD-Card and download the latest file
The camera can provide a list of files stored on the SD-Card, the
ipcamera tool currently allows the download of the latest file in the list.
# List files actioncam ls <Camera IP> # Download latest file actioncam fetch <Camera IP>
Send a RAW packet to the Camera
It's possible to send RAW commands to the camera to test new commands and help reverse engineer the protocol.
actioncam cmd <RAW Command and Payload in HEX> <Camera IP> # Example (Take a still image) actioncam cmd A038 192.168.1.1
On all tested cameras, there can only be one client connected to the camera at any given time. This means that to take a picture you have to stop a client that is currently running a preview stream.
To help with that issue the command line client will open a socket in the future that can accept commands to control the camera while previewing the video. (if this feature is really needed this could be implemented but the utility should be simple and without many side-effects).