# gssink

Write incoming data to a series of sequentially-named remote files on a Google Cloud Storage bucket.

The object-name property should contain a string with a %d placeholder that will be substituted with the index for each filename.

If the property is TRUE, it sends an application message named `GstGsSink` after writing each buffer.

The message's structure contains these fields:

- gchararray `filename`: the filename where the buffer was written.
- gchararray `date`: the date of the current buffer, NULL if no start date is provided.
- gint `index`: index of the buffer.
- GstClockTime `timestamp`: the timestamp of the buffer.
- GstClockTime `stream-time`: the stream time of the buffer.
- GstClockTime `running-time`: the running_time of the buffer.
- GstClockTime `duration`: the duration of the buffer.
- guint64 `offset`: the offset of the buffer that triggered the message.
- guint64 `offset-end`: the offset-end of the buffer that triggered the message.

## Example launch line

    gst-launch-1.0 videotestsrc num-buffers=15 ! pngenc ! gssink
    object-name="mypath/myframes/frame%05d.png" bucket-name="mybucket"
    next-file=buffer post-messages=true

### Upload 15 png images into gs://mybucket/mypath/myframes/ where the file

names are frame00000.png, frame00001.png, ..., frame00014.png

    gst-launch-1.0 videotestsrc num-buffers=6 ! video/x-raw, framerate=2/1 !
    pngenc ! gssink start-date="2020-04-16T08:55:03Z"
    object-name="mypath/myframes/im_%s_%03d.png" bucket-name="mybucket"
    next-file=buffer post-messages=true

### Upload png 6 images into gs://mybucket/mypath/myframes/ where the file

names are im_2020-04-16T08:55:03Z_000.png, im_2020-04-16T08:55:03Z_001.png, im_2020-04-16T08:55:04Z_002.png, im_2020-04-16T08:55:04Z_003.png, im_2020-04-16T08:55:05Z_004.png, im_2020-04-16T08:55:05Z_005.png.

    gst-launch-1.0 filesrc location=some_video.mp4 ! gssink
    object-name="mypath/myvideos/video.mp4" bucket-name="mybucket" next-file=none

### Upload any stream as a single file into Google Cloud Storage. Similar as

filesink in this case. The file is then accessible from: gs://mybucket/mypath/myvideos/video.mp4

See also:

## Hierarchy

    GObject
        ╰──GInitiallyUnowned
            ╰──GstObject
                ╰──GstElement
                    ╰──GstBaseSink
                        ╰──gssink

## Factory details

Authors: – Julien Isorce

Classification: – `Sink/File`

Rank – none

Plugin – gs

Package – GStreamer Bad Plug-ins

## Pad Templates

### `sink`

    ANY

Presence – always

Direction – sink

Object type – GstPad

## Properties

### bucket-name

    “bucket-name” gchararray

Name of the Google Cloud Storage bucket.

Flags : Read / Write

Default value : NULL

### index

    “index” gint

Index to use with location property to create file names.

Flags : Read / Write

Default value : 0

### next-file

    “next-file” Gs-sink-next *

A Gs-sink-next that specifies when to start a new file.

Flags : Read / Write

Default value : buffer (0)

### object-name

    “object-name” gchararray

Full path name of the remote file.

Flags : Read / Write

Default value : %%s_%%05d

### post-messages

    “post-messages” gboolean

Post a message on the GstBus for each file.

Flags : Read / Write

Default value : false

### service-account-email

    “service-account-email” gchararray

Service Account Email to use for credentials.

Flags : Read / Write

Default value : NULL

### start-date

    “start-date” gchararray

Start date in iso8601 format.

Flags : Read / Write

Default value : NULL

## Named constants

### Gs-sink-next

#### Members

`buffer` (0) – New file for each buffer
`Only one file, no next file` (1) – New file for each buffer

The results of the search are