camerabin

CameraBin is a high-level camera object that encapsulates gstreamer elements, providing an API for controlling a digital camera.

Note that camerabin is still UNSTABLE and under development.

CameraBin has the following main features:

  • Record videos
  • Capture pictures
  • Display a viewfinder
  • Post preview images for each capture (video and image)

Usage

Camerabin can be created using gst_element_factory_make just like any other element. Video or image capture mode can be selected using the mode property and the file to save the capture is selected using location property.

After creating camerabin, applications might want to do some customization (there's a section about this below), then select the desired mode and start capturing.

In image capture mode, just send a start-capture and a picture will be captured. When the picture is stored on the selected location, a GST_MESSAGE_ELEMENT named 'image-done' will be posted on the GstBus.

In video capture mode, send a start-capture to start recording, then send a stop-capture to stop recording. Note that both signals are asynchronous, so, calling stop-capture doesn't guarantee that the video has been properly finished yet. Applications should wait for the 'video-done' message to be posted on the bus.

In both modes, if post-previews is TRUE, a GstBuffer will be post to the GstBus in a field named 'buffer', in a 'preview-image' message of type GST_MESSAGE_ELEMENT.

Customization

Camerabin provides various customization properties, allowing the user to set custom filters, selecting the viewfinder sink and formats to use to encode the captured images/videos.

GstEncodingProfiles are used to tell camerabin which formats it should encode the captures to, those should be set to image-profile and video-profile. Default is jpeg for images, and ogg (theora and vorbis) for video. If a profile without an audio stream is set for video, audio will be disabled on recordings.

preview-caps can be used to select which format preview images should be posted on the GstBus. It has to be a raw video format.

Camerabin has a camera-source property so applications can set their source that will provide buffers for the viewfinder and for captures. This camera source is a special type of source that has 3 pads. To use a 'regular' source with a single pad you should use wrappercamerabinsrc, it will adapt your source and provide 3 pads.

Applications can also select the desired viewfinder sink using viewfinder-sink, it is also possible to select the audio source using audio-source.

The viewfinder resolution can be configured using viewfinder-caps, these GstCaps should be a subset of viewfinder-supported-caps.

To select the desired resolution for captures, camerabin provides image-capture-caps and video-capture-caps, these caps must be a subset of what the source can produce. The allowed caps can be probed using image-capture-supported-caps and video-capture-supported-caps. In an analogous way, there are audio-capture-caps and audio-capture-supported-caps.

Camerabin also allows applications to insert custom GstElement on any of its branches: video capture, image capture, viewfinder and preview. Check video-filter, image-filter, viewfinder-filter and preview-filter.

Example launch line

Unfortunately, camerabin can't be really used from gst-launch-1.0, as you need to send signals to control it. The following pipeline might be able to show the viewfinder using all the default elements.

 gst-launch-1.0 -v -m camerabin

Hierarchy

GObject
    ╰──GInitiallyUnowned
        ╰──GstObject
            ╰──GstElement
                ╰──GstBin
                    ╰──GstPipeline
                        ╰──camerabin

Factory details

Authors: – Thiago Santos

Classification:Generic/Bin/Camera

Rank – none

Plugin – gstcamerabin

Package – GStreamer Bad Plug-ins git

Signals

start-capture

start_capture_callback (GstElement * param_0,
                        gpointer udata)
def start_capture_callback (param_0, udata):
    #python callback for the 'start-capture' signal
function start_capture_callback(param_0: GstElement * param_0, udata: gpointer udata): {
    // javascript callback for the 'start-capture' signal
}

Parameters:

param_0
No description available
udata
No description available

stop-capture

stop_capture_callback (GstElement * param_0,
                       gpointer udata)
def stop_capture_callback (param_0, udata):
    #python callback for the 'stop-capture' signal
function stop_capture_callback(param_0: GstElement * param_0, udata: gpointer udata): {
    // javascript callback for the 'stop-capture' signal
}

Parameters:

param_0
No description available
udata
No description available

Properties

async-handling

“async-handling” gboolean

The bin will handle Asynchronous state changes

Flags : Read / Write

Default value : false


audio-capture-caps

“audio-capture-caps” GstCaps *

Format to capture audio for video recording represented as GstCaps

Flags : Read / Write

Default value :

ANY

audio-capture-supported-caps

“audio-capture-supported-caps” GstCaps *

Formats supported for capturing audio represented as GstCaps

Flags : Read


audio-filter

“audio-filter” GstElement *

The element that will process captured audio buffers when recording. (Should be set on NULL state)

Flags : Read / Write


audio-source

“audio-source” GstElement *

The audio source element to be used on video recordings. It is only taken into use on the next null to ready transition

Flags : Read / Write


auto-flush-bus

“auto-flush-bus” gboolean

Whether to automatically flush the pipeline's bus when going from READY into NULL state

Flags : Read / Write

Default value : true


camera-source

“camera-source” GstElement *

The camera source element to be used. It is only taken into use on the next null to ready transition

Flags : Read / Write


delay

“delay” guint64

Expected delay needed for elements to spin up to PLAYING in nanoseconds

Flags : Read / Write

Default value : 0


flags

“flags” Cam-flags

Control the behaviour of encodebin.

Flags : Read / Write

Default value : (none)


idle

“idle” gboolean

If camerabin2 is idle (not doing captures).

Flags : Read

Default value : true


image-capture-caps

“image-capture-caps” GstCaps *

Caps for image capture

Flags : Read / Write

Default value :

ANY

image-capture-supported-caps

“image-capture-supported-caps” GstCaps *

Formats supported for capturing images represented as GstCaps

Flags : Read


image-filter

“image-filter” GstElement *

The element that will process captured image frames. (Should be set on NULL state)

Flags : Read / Write


image-profile

“image-profile” GstEncodingProfile *

The GstEncodingProfile to use for image captures.

Flags : Read / Write


latency

“latency” guint64

Latency to configure on the pipeline

Flags : Read / Write

Default value : 18446744073709551615


location

“location” gchararray

Location to save the captured files. A %%d might be used on thefilename as a placeholder for a numeric index of the capture.Default is cap_%%d

Flags : Read / Write

Default value : cap_%%d


max-zoom

“max-zoom” gfloat

Digital zoom factor (e.g. 1.5 means 1.5x)

Flags : Read

Default value : 10


message-forward

“message-forward” gboolean

Forwards all children messages

Flags : Read / Write

Default value : false


mode

“mode” Camera-bin2mode

The capture mode (still image capture or video recording)

Flags : Read / Write

Default value : mode-image (1)


mute

“mute” gboolean

If the audio recording should be muted. Note that this still saves audio data to the resulting file, but they are silent. Use a video-profile without audio to disable audio completely

Flags : Read / Write

Default value : false


name

“name” gchararray

The name of the object

Flags : Read / Write / Construct

Default value : NULL


parent

“parent” GstObject *

The parent of the object

Flags : Read / Write


post-previews

“post-previews” gboolean

If capture preview images should be posted to the bus

Flags : Read / Write

Default value : false


preview-caps

“preview-caps” GstCaps *

The caps of the preview image to be posted

Flags : Read / Write


preview-filter

“preview-filter” GstElement *

The element that will process preview buffers. (Should be set on NULL state)

Flags : Read / Write


video-capture-caps

“video-capture-caps” GstCaps *

Caps for video capture

Flags : Read / Write

Default value :

ANY

video-capture-supported-caps

“video-capture-supported-caps” GstCaps *

Formats supported for capturing videos represented as GstCaps

Flags : Read


video-filter

“video-filter” GstElement *

The element that will process captured video frames. (Should be set on NULL state)

Flags : Read / Write


video-profile

“video-profile” GstEncodingProfile *

The GstEncodingProfile to use for video recording. Audio is enabled when this profile supports audio.

Flags : Read / Write


viewfinder-caps

“viewfinder-caps” GstCaps *

Restricts the caps that can be used on the viewfinder

Flags : Read / Write

Default value :

ANY

viewfinder-filter

“viewfinder-filter” GstElement *

The element that will process frames going to the viewfinder. (Should be set on NULL state)

Flags : Read / Write


viewfinder-sink

“viewfinder-sink” GstElement *

The video sink of the viewfinder. It is only taken into use on the next null to ready transition

Flags : Read / Write


viewfinder-supported-caps

“viewfinder-supported-caps” GstCaps *

The caps that the camera source can produce on the viewfinder pad

Flags : Read


zoom

“zoom” gfloat

Digital zoom factor (e.g. 1.5 means 1.5x)

Flags : Read / Write

Default value : 1


Named constants

Cam-flags

Members

no-audio-conversion (0x00000001) – Do not use audio conversion elements
no-video-conversion (0x00000002) – Do not use video conversion elements
no-viewfinder-conversion (0x00000004) – Do not use viewfinder conversion elements
no-image-conversion (0x00000008) – Do not use image conversion elements

Camera-bin2mode

Members

mode-image (1) – Still image capture (default)
mode-video (2) – Video recording

The results of the search are