> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.stereolabs.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.stereolabs.com/_mcp/server.

# GStreamer - ZED Sensors CSV Sink

The **ZED Sensors Data CSV Sink**, `zeddatacsvsink` GStreamer element, is a sink that allows logging the sensors data of ZED cameras equipped with an IMU (every model except the original ZED) to a CSV file.

The [source code](https://github.com/stereolabs/zed-gstreamer/tree/master/gst-zed-data-csv-sink) of this plugin is a complete example of how to process the ZED metadata in a GStreamer element to retrieve sensor data.

## Properties

```bash
  append              : Append to an already existing CSV file
                        flags: readable, writable
                        Boolean. Default: false
  async               : Go asynchronously to PAUSED
                        flags: readable, writable
                        Boolean. Default: true
  blocksize           : Size in bytes to pull per buffer (0 = default)
                        flags: readable, writable
                        Unsigned Integer. Range: 0 - 4294967295 Default: 4096 
  enable-last-sample  : Enable the last-sample property
                        flags: readable, writable
                        Boolean. Default: true
  last-sample         : The last sample received in the sink
                        flags: readable
                        Boxed pointer of type "GstSample"
  location            : Location of the CSV file to write
                        flags: readable, writable
                        String. Default: ""
  max-bitrate         : The maximum bits per second to render (0 = disabled)
                        flags: readable, writable
                        Unsigned Integer64. Range: 0 - 18446744073709551615 Default: 0 
  max-lateness        : Maximum number of nanoseconds that a buffer can be late before it is dropped (-1 unlimited)
                        flags: readable, writable
                        Integer64. Range: -1 - 9223372036854775807 Default: -1 
  name                : The name of the object
                        flags: readable, writable, 0x2000
                        String. Default: "zeddatacsvsink0"
  parent              : The parent of the object
                        flags: readable, writable, 0x2000
                        Object of type "GstObject"
  processing-deadline : Maximum processing time for a buffer in nanoseconds
                        flags: readable, writable
                        Unsigned Integer64. Range: 0 - 18446744073709551615 Default: 20000000 
  qos                 : Generate Quality-of-Service events upstream
                        flags: readable, writable
                        Boolean. Default: false
  render-delay        : Additional render delay of the sink in nanoseconds
                        flags: readable, writable
                        Unsigned Integer64. Range: 0 - 18446744073709551615 Default: 0 
  stats               : Sink Statistics
                        flags: readable
                        Boxed pointer of type "GstStructure"
                                                        average-rate: 0
                                                             dropped: 0
                                                            rendered: 0

  sync                : Sync on the clock
                        flags: readable, writable
                        Boolean. Default: false
  throttle-time       : The time to keep between rendered buffers (0 = disabled)
                        flags: readable, writable
                        Unsigned Integer64. Range: 0 - 18446744073709551615 Default: 0 
  ts-offset           : Timestamp offset in nanoseconds
                        flags: readable, writable
                        Integer64. Range: -9223372036854775808 - 9223372036854775807 Default: 0 
```

## CSV Format

The following information is saved in the CSV file:

* `TIMESTAMP`: data timestamp in \[ns].
* `STREAM_TYPE`: type of stream acquired by `zedsrc` (see [`ZedInfo` data structure](/docs/integrations/gstreamer/zed-metadata#zedinfo)).
* `CAM_MODEL`: camera model used to acquire data (see [`ZedInfo` data structure](/docs/integrations/gstreamer/zed-metadata#zedinfo)).
* `GRAB_W`: width of camera frames.
* `GRAB_H`: height of camera frames.
* `POSE_VAL`: 1 if the camera pose is valid.
* `POS_TRK_STATE`: status of the positional tracking algorithm (see [`ZedPose` data structure](/docs/integrations/gstreamer/zed-metadata#zedpose)).
* `POS_X_[m]`: X coordinate of the camera position in \[m].
* `POS_Y_[m]`: Y coordinate of the camera position in \[m].
* `POS_Z_[m]`: Z coordinate of the camera position in \[m].
* `OR_X_[rad]`: orientation of the camera around the X axis in \[rad].
* `OR_Y_[rad]`: orientation of the camera around the Y axis in \[rad].
* `OR_Z_[rad]`: orientation of the camera around the Z axis in \[rad].
* `IMU_VAL`: 1 if IMU data are valid.
* `ACC_X_[m/s²]`: acceleration value along the X axis in \[m/s²].
* `ACC_Y_[m/s²]`: acceleration value along the Y axis in \[m/s²].
* `ACC_Z_[m/s²]`: acceleration value along the Z axis in \[m/s²].
* `GYRO_X_[rad/s]`: angular velocity around the X axis in \[rad/s].
* `GYROY_[rad/s]`: angular velocity around the Y axis in \[rad/s]. *(the missing underscore is the actual column name written by the element)*
* `GYRO_Z_[rad/s]`: angular velocity around the Z axis in \[rad/s].
* `MAG_VAL`: 1 if magnetometer data are valid.
* `MAG_X_[uT]`: magnetic field value along the X axis in \[µT].
* `MAG_Y_[uT]`: magnetic field value along the Y axis in \[µT].
* `MAG_Z_[uT]`: magnetic field value along the Z axis in \[µT].
* `ENV_VAL`: 1 if environment data are valid.
* `TEMP_[°C]`: internal camera temperature in \[°C].
* `PRESS_[hPa]`: atmospheric pressure in \[hPa].
* `TEMP_VAL`: 1 if camera CMOS temperatures are valid.
* `TEMP_L_[°C]`: temperature of the left CMOS sensor in \[°C].
* `TEMP_R_[°C]`: temperature of the right CMOS sensor in \[°C].

## Example pipelines

### Sensors data logging to CSV file

The following is a pipeline to acquire a stream at the default resolution with RGB and Depth data and save the sensor data to a CSV file for logging:

```bash
gst-launch-1.0 zedsrc stream-type=4 ! \
 zeddemux stream-data=true is-depth=true name=demux \
 demux.src_left ! queue ! autovideoconvert ! fpsdisplaysink \
 demux.src_aux ! queue ! autovideoconvert ! fpsdisplaysink \
 demux.src_data ! queue ! zeddatacsvsink location="${HOME}/test_csv.csv" append=FALSE
```

![Pipeline graph: zedsrc to zeddemux, whose src\_left and src\_aux pads feed two display branches while src\_data feeds zeddatacsvsink](/_fern-files/stereolabs.docs.buildwithfern.com/485c3cc49e155b383c13c08115e00325335ea59b2ec09ed38707a6b91e73c2ff/docs/software-integration/gstreamer/images/csv_sink_pipeline.svg)

> **Note**
>
> A [`zeddemux` element](/docs/integrations/gstreamer/zed-demux) is required, with `stream-data=true`, to create a branch of the pipeline where only sensor data flows.