I am trying to use Raspberry pi as a web camera streaming server. I am following this tutorial which uses Motion tool.
When I start the motion service, it exists without giving me an error and when I go to the streaming URL(http://myrpi:8081) I get nothing there.
I tried to take a few pictures using FFmpeg and it worked.
ffmpeg -f video4linux2 -i /dev/video0 -vframes 2 test%3d.jpeg
This means my USB Web camera is working with the raspberry pi. I am attaching configuration and log file contents below. Please let me know if you need more details.
-- Thank you in advance.
- Model Number: Raspberry Pi 4 Model B Rev 1.4
- OS Version: Raspbian GNU/Linux 11 (bullseye)
- USB Web Camera Model: Please see below:
$ lsusb
Bus 001 Device 004: ID 1e4e:0100 Cubeternet WebCam
$ v4l2-ctl --device=/dev/video0 --all
Driver Info:
Driver name : uvcvideo
Card type : USB2.0 Camera: USB2.0 Camera
Bus info : usb-0000:01:00.0-1.3
Driver version : 5.10.63
Capabilities : 0x84a00001
Video Capture
Metadata Capture
Streaming
Extended Pix Format
Device Capabilities
Device Caps : 0x04200001
Video Capture
Streaming
Extended Pix Format
Media Driver Info:
Driver name : uvcvideo
Model : USB2.0 Camera: USB2.0 Camera
Serial :
Bus info : usb-0000:01:00.0-1.3
Media version : 5.10.63
Hardware revision: 0x00000002 (2)
Driver version : 5.10.63
Interface Info:
ID : 0x03000002
Type : V4L Video
Entity Info:
ID : 0x00000001 (1)
Name : USB2.0 Camera: USB2.0 Camera
Function : V4L2 I/O
Flags : default
Pad 0x01000007 : 0: Sink
Link 0x02000010: from remote pad 0x100000a of entity 'Extension 4': Data, Enabled, Immutable
Priority: 2
Video input : 0 (Camera 1: ok)
Format Video Capture:
Width/Height : 640/480
Pixel Format : 'YUYV' (YUYV 4:2:2)
Field : None
Bytes per Line : 1280
Size Image : 614400
Colorspace : sRGB
Transfer Function : Rec. 709
YCbCr/HSV Encoding: ITU-R 601
Quantization : Default (maps to Limited Range)
Flags :
Crop Capability Video Capture:
Bounds : Left 0, Top 0, Width 640, Height 480
Default : Left 0, Top 0, Width 640, Height 480
Pixel Aspect: 1/1
Selection Video Capture: crop_default, Left 0, Top 0, Width 640, Height 480, Flags:
Selection Video Capture: crop_bounds, Left 0, Top 0, Width 640, Height 480, Flags:
Streaming Parameters Video Capture:
Capabilities : timeperframe
Frames per second: 30.000 (30/1)
Read buffers : 0
brightness 0x00980900 (int) : min=-127 max=127 step=1 default=0 value=0
contrast 0x00980901 (int) : min=0 max=127 step=1 default=62 value=62
saturation 0x00980902 (int) : min=0 max=255 step=1 default=64 value=64
hue 0x00980903 (int) : min=-16000 max=16000 step=1 default=20 value=20
gamma 0x00980910 (int) : min=16 max=500 step=1 default=125 value=125
sharpness 0x0098091b (int) : min=0 max=31 step=1 default=2 value=2
- Conf file motion.conf: Please see below
# Rename this distribution example file to motion.conf
#
# This config file was generated by motion 4.3.2
# Documentation: /usr/share/doc/motion/motion_guide.html
#
# This file contains only the basic configuration options to get a
# system working. There are many more options available. Please
# consult the documentation for the complete list of all options.
#
############################################################
System control configuration parameters
############################################################
Start in daemon (background) mode and release terminal.
daemon on
Start in Setup-Mode, daemon disabled.
setup_mode off
File to store the process ID.
; pid_file value
File to write logs messages into. If not defined stderr and syslog is used.
log_file /var/log/motion/motion.log
Level of log messages [1..9] (EMG, ALR, CRT, ERR, WRN, NTC, INF, DBG, ALL).
log_level 6
Target directory for pictures, snapshots and movies
target_dir /var/lib/motion: this was default setting
target_dir /home/pi/Monitor
Video device (e.g. /dev/video0) to be used for capturing.
videodevice /dev/video0
videodevice /dev/video1
Parameters to control video device. See motion_guide.html
; vid_control_params value
The full URL of the network camera stream.
; netcam_url value
Name of mmal camera (e.g. vc.ril.camera for pi camera).
; mmalcam_name value
Camera control parameters (see raspivid/raspistill tool documentation)
; mmalcam_control_params value
############################################################
Image Processing configuration parameters
############################################################
Image width in pixels.
width 640
Image height in pixels.
height 480
Maximum number of frames to be captured per second.
framerate 15
Text to be overlayed in the lower left corner of images
text_left CAMERA1
Text to be overlayed in the lower right corner of images.
text_right %Y-%m-%d\n%T-%q
############################################################
Motion detection configuration parameters
############################################################
Always save pictures and movies even if there was no motion.
emulate_motion off
Threshold for number of changed pixels that triggers motion.
threshold 1500
Noise threshold for the motion detection.
; noise_level 32
Despeckle the image using (E/e)rode or (D/d)ilate or (l)abel.
despeckle_filter EedDl
Number of images that must contain motion to trigger an event.
minimum_motion_frames 1
Gap in seconds of no motion detected that triggers the end of an event.
event_gap 60
The number of pre-captured (buffered) pictures from before motion.
pre_capture 3
Number of frames to capture after motion is no longer detected.
post_capture 0
############################################################
Script execution configuration parameters
############################################################
Command to be executed when an event starts.
; on_event_start value
Command to be executed when an event ends.
; on_event_end value
Command to be executed when a movie file is closed.
; on_movie_end value
############################################################
Picture output configuration parameters
############################################################
Output pictures when motion is detected
picture_output off
File name(without extension) for pictures relative to target directory
picture_filename %Y%m%d%H%M%S-%q
############################################################
Movie output configuration parameters
############################################################
Create movies of motion events.
movie_output on
Maximum length of movie in seconds.
movie_max_time 60
The encoding quality of the movie. (0=use bitrate. 1=worst quality, 100=best)
movie_quality 45
Container/Codec to used for the movie. See motion_guide.html
movie_codec mkv
File name(without extension) for movies relative to target directory
movie_filename %t-%v-%Y%m%d%H%M%S
############################################################
Webcontrol configuration parameters
############################################################
Port number used for the webcontrol.
webcontrol_port 8080
Restrict webcontrol connections to the localhost.
webcontrol_localhost on
Type of configuration options to allow via the webcontrol.
webcontrol_parms 0
############################################################
Live stream configuration parameters
############################################################
The port number for the live stream.
stream_port 8081
Restrict stream connections to the localhost.
stream_localhost off
##############################################################
Camera config files - One for each camera.
##############################################################
; camera /usr/etc/motion/camera1.conf
; camera /usr/etc/motion/camera2.conf
; camera /usr/etc/motion/camera3.conf
; camera /usr/etc/motion/camera4.conf
##############################################################
Directory to read '.conf' files for cameras.
##############################################################
; camera_dir /usr/etc/motion/conf.d
- Log file content(/var/log/motion/motion.log): Please see below:
[0:motion] [NTC] [ALL] [Dec 04 17:03:18] motion_startup: Motion 4.3.2 Started
[0:motion] [NTC] [ALL] [Dec 04 17:03:18] motion_startup: Using default log type (ALL)
[0:motion] [NTC] [ALL] [Dec 04 17:03:18] motion_startup: Using log type (ALL) log level (NTC)
[0:motion] [NTC] [ALL] [Dec 04 17:03:18] become_daemon: Motion going to daemon mode
[0:motion] [NTC] [ALL] [Dec 04 17:03:18] motion_startup: Motion running as daemon process
[0:motion] [NTC] [STR] [Dec 04 17:03:18] webu_start_strm: Starting all camera streams on port 8081
[0:motion] [NTC] [STR] [Dec 04 17:03:18] webu_strm_ntc: Started camera 0 stream on port 8081
[0:motion] [NTC] [STR] [Dec 04 17:03:18] webu_start_ctrl: Starting webcontrol on port 8080
[0:motion] [NTC] [STR] [Dec 04 17:03:18] webu_start_ctrl: Started webcontrol on port 8080
[0:motion] [NTC] [ENC] [Dec 04 17:03:18] ffmpeg_global_init: ffmpeg libavcodec version 58.91.100 libavformat version 58.45.100
[0:motion] [NTC] [ALL] [Dec 04 17:03:18] translate_init: Language: English
[0:motion] [NTC] [ALL] [Dec 04 17:03:18] motion_start_thread: Camera ID: 0 is from /etc/motion/motion.conf
[0:motion] [NTC] [ALL] [Dec 04 17:03:18] motion_start_thread: Camera ID: 0 Camera Name: (null) Device: /dev/video0
[0:motion] [NTC] [ALL] [Dec 04 17:03:18] main: Waiting for threads to finish, pid: 4956
[1:ml1] [NTC] [ALL] [Dec 04 17:03:18] motion_init: Camera 0 started: motion detection Enabled
[1:ml1] [NTC] [VID] [Dec 04 17:03:18] vid_start: Opening V4L2 device
[1:ml1] [NTC] [VID] [Dec 04 17:03:18] v4l2_device_open: Using videodevice /dev/video0 and input -1
[1:ml1] [NTC] [VID] [Dec 04 17:03:18] v4l2_device_capability: - VIDEO_CAPTURE
[1:ml1] [NTC] [VID] [Dec 04 17:03:18] v4l2_device_capability: - STREAMING
[1:ml1] [NTC] [VID] [Dec 04 17:03:18] v4l2_input_select: Name = "Camera 1"- CAMERA
[1:ml1] [NTC] [VID] [Dec 04 17:03:18] v4l2_norm_select: Device does not support specifying PAL/NTSC norm
[1:ml1] [NTC] [VID] [Dec 04 17:03:18] v4l2_pixfmt_select: Configuration palette index 17 (YU12) for 640x480 doesn't work.
[1:ml1] [NTC] [VID] [Dec 04 17:03:18] v4l2_pixfmt_select: Supported palettes:
[1:ml1] [NTC] [VID] [Dec 04 17:03:18] v4l2_pixfmt_select: (0) YUYV (YUYV 4:2:2)
[1:ml1] [NTC] [VID] [Dec 04 17:03:18] v4l2_pixfmt_set: Testing palette YUYV (640x480)
[1:ml1] [NTC] [VID] [Dec 04 17:03:18] v4l2_pixfmt_set: Using palette YUYV (640x480)
[1:ml1] [NTC] [VID] [Dec 04 17:03:18] v4l2_pixfmt_select: Selected palette YUYV
[1:ml1] [NTC] [ALL] [Dec 04 17:03:18] image_ring_resize: Resizing pre_capture buffer to 1 items
[1:ml1] [NTC] [ALL] [Dec 04 17:03:18] image_ring_resize: Resizing pre_capture buffer to 4 items
[1:ml1] [NTC] [ALL] [Dec 04 17:03:18] mlp_actions: End of event 1
[1:ml1] [NTC] [ALL] [Dec 04 17:03:18] motion_loop: Thread exiting
[1:ml1] [NTC] [VID] [Dec 04 17:03:18] vid_close: Cleaning up V4L2 device
[1:ml1] [NTC] [VID] [Dec 04 17:03:18] v4l2_cleanup: Closing video device /dev/video0
[0:motion] [NTC] [ALL] [Dec 04 17:03:19] main: Threads finished
[0:motion] [NTC] [ALL] [Dec 04 17:03:19] main: Motion terminating
[0:motion] [NTC] [ALL] [Dec 04 17:03:19] motion_remove_pid: Closing logfile (/var/log/motion/motion.log).
- Motion service status: Please see below
$ sudo service motion status
● motion.service - Motion detection video capture daemon
Loaded: loaded (/lib/systemd/system/motion.service; enabled; vendor preset: enabled)
Active: inactive (dead) since Sat 2021-12-04 17:03:19 IST; 46s ago
Docs: man:motion(1)
Process: 4955 ExecStart=/usr/bin/motion (code=exited, status=0/SUCCESS)
Main PID: 4955 (code=exited, status=0/SUCCESS)
CPU: 346ms
Dec 04 17:03:17 raspberrypi systemd[1]: Started Motion detection video capture daemon.
Dec 04 17:03:18 raspberrypi motion[4955]: [0:motion] [NTC] [ALL] conf_load: Processing thread 0 - config file /etc/motion/motion.conf
Dec 04 17:03:18 raspberrypi motion[4955]: [0:motion] [NTC] [ALL] conf_load: Processing thread 0 - config file /etc/motion/motion.conf
Dec 04 17:03:18 raspberrypi motion[4955]: [0:motion] [NTC] [ALL] motion_startup: Logging to file (/var/log/motion/motion.log)
Dec 04 17:03:18 raspberrypi motion[4955]: [0:motion] [NTC] [ALL] motion_startup: Logging to file (/var/log/motion/motion.log)
Dec 04 17:03:19 raspberrypi systemd[1]: motion.service: Succeeded.