Frame Sources

A frame source provides images to LectureSight for processing, typically from an overview camera.

The FrameSourceProvider service in the lecturesight-framesource-impl bundle provides the infrastructure responsible for managing FrameSource implementations. It discovers video input plugins and is responsible for setting up configured FrameSources with the proper input plugin.

Configuration

Key Default Description
cv.lecturesight.framesource.i nput.mrl v4l:///d ev/video 0[width= 320;heig ht=240] MRL of the video input from the overview camera
cv.lecturesight.framesource.i nverted false If true, rotates the framesource 180 degrees. Used for cameras mounted inverted (upside-down)
cv.lecturesight.framesource.m axfps 60 Maximum fps rate at which frames should be read from the device.
cv.lecturesight.framesource.s napshot.file   Filename to which overview image snapshots should be saved periodically
cv.lecturesight.framesource.s napshot.interval 60 Interval in seconds to save overview image snapshots

The Media Resource Locator (MRL) has the following form:

type :// path [options]
Part Meaning
type the type of the input, determines which input plugin is used
path path to the input, usually a Linux device or file
options additional arguments for the input plugin

V4L Frame Source

The lecturesight-framesource-v4l bundle provides a FrameSource implementation for accquiring frames from Video4Linux and Video4Linux 2 devices such as webcams and frame grabbers.

Arguments for creation of a new FrameSource from this implementation can be provided in the FrameSource MRL. If an argument is not present in the MRL, the default value is taken from the configuration properties.

Usage

The type for this FrameSource implementation is v4l or v4l2. The path is the path to a Linux video device such as /dev/video

Available arguments are width, height, standard, channel, quality.

Examples

Video4Linux device /dev/video0 as input with QVGA resolution.

cv.lecturesight.framesource.input.mrl=v4l:///dev/video0[width=320;height=240]

Video4Linux2 device /dev/video0 as input with QVGA resolution.

cv.lecturesight.framesource.input.mrl=v4l2:///dev/video0[width=320;height=240]

Configuration

Key Default Description
cv.lecturesight.framesource.v 4l.channel 0 Default video input. Usually not used with USB webcams but rather with capture cards. This can be useful with capture cards, since they are by default set to tuner input and need to be set to composite (usually 1).
cv.lecturesight.framesource.v 4l.format YUYV YUYV or MJPEG for webcams
cv.lecturesight.framesource.v 4l.quality 0 Default encoding quality. Only used for devices that provide encoded video streams (such as MPEG2 or MJPEG). Value range depends on device driver.
cv.lecturesight.framesource.v 4l.resolution.width 320 Default width for input frames.
cv.lecturesight.framesource.v 4l.resolution.height 240 Default height for input frames.
cv.lecturesight.framesource.v 4l.standard 0 Default video standard. Usually not used with USB webcams but rather with capture cards. Which value indicates a certain standard (eg. PAL-X/NTSC) depends on the driver of the video device.

V4L2 Device Controls

It is also possible to set V4L2 device controls by including them in the option list. To find out which controls the v4l2 device supports, look at the device information logged by the V4LFrameGrabberFactory.createFrameGrabber method. For example this device has a control named Brightness which can be set in the range 0 to 255:

2017-12-12 06:31:43.587 INFO    CM Configuration Updater (Update: pid=org.apache.felix.fileinstall.235d4e28-9777-462b-93dd-d7a91af9d18e) V4LFrameGrabberFactory.createFrameGrabber() : Name: Brightness = 128 Type: CTRL_TYPE_SLIDER Values: [ 0 .. 255 ] increment: 1

To set this value in the MRL, add it to the option list:

cv.lecturesight.framesource.input.mrl=v4l2:///dev/logitech[width=640;height=360;Brightness=100]

GStreamer Frame Source

The lecturesight-framesource-gst bundle provides a Frame Source implementation that uses a user-defined GStreamer pipeline to capture frames. The pipeline definition is given in the format that is used in the gst-launch command. The implementation adds a color space element, a capsfilter and an appsink to the user-defined pipeline that are responsible for converting the frames to RGB format and hand them over to the system.

Usage

MRLs for this Frame Source contain the GStreamer pipeline definition in the format used in the gst-launch command.

gst://(gst-launch definition)[(options)]

Note: You must define a pipeline with at least two elements, otherwise the creation of the Frame Source will fail (issue LS-71).

Options

drop – optional, default: true

Sets the drop property of the appsink that hands the frames over to the system.

For real-time frame sources such as cameras it is recommended to set this value to true so that the newest frames is uploaded to the GPU for video analysis.

When testing with a non-live frame source such as video files, drop may be set to false so that the system gets every frame for analysis.

More information on the appsink element and its drop property are available in the GStreamer documentation.

Examples

Consume an RTSP stream from an Axis IP camera:

cv.lecturesight.framesource.input.mrl=gst://rtspsrc location=rtsp://venue1-camera.someplace.edu/axis-media/media.amp ! rtph264depay ! avdec_h264 ! videoconvert

Use a V4L2 source:

cv.lecturesight.framesource.input.mrl=gst://v4l2src device=/dev/video0 ! ffmpegcolorspace [drop=true]

Use a gstreamer test pattern:

cv.lecturesight.framesource.input.mrl=gst://videotestsrc ! identity

RTPH264 Frame Source

The lecturesight-framesource-rtph264 bundle provides a FrameSource implementation that reads H264 video from an RTP stream. This is a special-purpose gstreamer pipeline designed to consume video from a RaspberryPi camera with minimal latency.

Example:

cv.lecturesight.framesource.input.mrl=rtph264://venue1-camera.someplace.edu:8554

Videofile Frame Source

The lecturesight-framesource-videofile bundle provides a FrameSource implementation that reads frames from a video file using gstreamer.

It depends on the set of codecs installed in the host operating systems what formats are supported. Standard MPEG file formats should always be supported since they are included in most standard installations.

The type for this FrameSource implementation is file. The path is the path to a video file. There are no arguments for this FrameSource implementation.

Example, using the file /opt/ls/media/overview.mp4 as a frame source:

cv.lecturesight.framesource.input.mrl=file:///opt/ls/media/overview.mp4