startLiveStreaming()

startLiveStreaming({ rtmpUrl, endpoints, ...options })

Compatibility:
Prebuilt
Custom

Receive a $15 credit for free

Try Daily pay-as-you-go features for free! New accounts have a $15 credit automatically applied when you add a credit card to the account. Learn more about pay-as-you-go features on our pricing page.

Starts a live stream at the rtmpUrl specified. Note that the participant who initiates this must be an owner and there is a domain level constraint on the number of concurrent streams (max_live_streams).

Multiple RTMP URLs can be passed using the endpoints property, which accepts an array of RTMP URLs. (See addLiveStreamingEndpoints() for a code example using this property.)

Note: The outgoing rtmp stream has the following properties:

  • Resolution: 1920 x 1080
  • Frame rate: 30fps
  • Keyframe: every 2 seconds (60 frames)
  • Target bitrate: 5Mbps

The following additional options are currently available:

  • height, width: Can be specified to control the resolution of the live stream

  • backgroundColor: Specifies the background color of the stream, formatted as #rrggbb or #aarrggbb string.

  • fps: Specifies the video frame rate per second.

  • layout: an object specifying the way participants’ videos are laid out in the live stream. A preset key with one of the following values must be provided:

    • 'default': This is the default grid layout, which renders participants in a grid, or in a vertical grid to the right, if a screen share is enabled. Optionally, a max_cam_streams integer key can be provided to specify how many cameras to include in the grid. The default value is 20, which is also the maximum number of cameras in a grid. The maximum may be increased at a later date.
    • 'single-participant': Use this layout to limit the audio and video to be streamed to a specific participant. The selected participant’s session ID must be specified via a session_id key.
    • 'active-participant': This layout focuses on the current speaker, and places up to 9 other cameras to the right in a vertical grid in the order in which they last spoke.
    • 'portrait': Allows for mobile-friendly layouts. The video will be forced into portrait mode, where up to 2 participants will be shown. An additional variant key may be specified. Valid values are:
      • 'vertical' for a vertical grid layout (the default)
      • 'inset'for having one participant's video take up the entire screen, and the other inset in a smaller rectangle. Participants' videos are scaled and cropped to fit the entire available space. Participants with the is_owner flag are shown lower in the grid (vertical variant), or full screen (inset variant).
    • 'custom': Allows for custom layouts. (See below.)

We're working on improving the set of available presets. Please contact us if you have specific requirements or feedback.


Daily offers a "baseline" composition option via the "custom" layout preset for customizing your video layouts while live streaming. This option allows for even more flexibility while using Daily's live streaming API.

Review our Video Component System (VCS) guide or VCS Simulator for additional information and code examples.

Many VCS properties use a "grid unit". The grid unit is a designer-friendly, device-independent unit. The default grid size is 1/36 of the output's minimum dimension. In other words, 1gu = 20px on a 720p stream and 30px on a 1080p stream.

Baseline composition properties

string

Sets the layout mode. Valid options:

  • single: Show a single full-screen video.
  • split: Show the first two participants side-by-side.
  • grid: Show up to 20 videos in a grid layout.
  • dominant: Show the active speaker in a large pane on the left, with additional video thumbnails on the right.
  • pip: Show the active speaker in a full-screen view, with the first participant inlaid in a corner.
Default: grid

Sets whether a text overlay is displayed. You can configure the contents of the overlay with the text.* properties.

Default: false

Sets whether an image overlay is displayed. You can configure the display of the overlay with the image.* properties. The image used must be passed in the session_id layout option when the stream or recording is started.

Default: false

When enabled, screen share inputs will be sorted before camera inputs. This is useful when prioritizing screen shares in your layout, especially when all inputs are not included in the final stream.

Default: false

Sets whether call participants' names are displayed on their video tiles.

Default: false

Sets whether to display video tiles with squared or rounded corners.

Default: false

Controls how source video is displayed inside a tile if they have different aspect ratios. Use fill to crop the video to fill the entire tile. Use fit to make sure the entire video fits inside the tile, adding letterboxes or pillarboxes as necessary.

Default: fill

Sets the background color for video placeholder tile. Valid options:

  • Hex color codes

  • RGB or RGBA syntax

  • Standard CSS color names (e.g. 'blue')

Default: rgb(0, 50, 80)

Control where the dominant (or "active speaker") video is displayed in the dominant layout mode. Values are left, right, top or bottom.

Default: left

Sets the position of the imaginary line separating the dominant video from the smaller tiles when using the dominant layout. Values are from 0 to 1. The default is 0.8, so if videoSettings.dominant.position is set to left, the dominant video will take 80% of the width of the screen on the left.

Default: 0.8

Controls how many "chiclets", or smaller video tiles, appear alongside the dominant video when using the dominant layout.

Default: 5

When in "dominant" mode, the large tile displays the active speaker by default. Turn off this followDomFlag to display the first participant instead of the active speaker.

Default: true

Margin between the “chiclet” items, in grid units. Steps: 0.01.

Default: 0.7

Padding around the row/column of “chiclet” items, in grid units. Steps: 0.01.

Default: 0.5

Sets the position of the smaller video in the pip (picture-in-picture) layout. Valid options: top-left, top-right, bottom-left, bottom-right.

Default: top-right

Sets the aspect ratio of the smaller video in the pip layout. The default is 1.0, which produces a square video.

Default: 1

Sets the height of the smaller video in the pip layout with a grid unit. Steps: 1.

Default: 12

Sets the margin between the smaller video and the edge of the frame in the pip layout. Steps: 0.01.

Default: 1.5

When in "pip" (or picture-in-picture) mode, the overlay tile displays the first participant in the participant array by default. Turn on this followDomFlag to display the active speaker instead.

Default: false

Sets the participant label style option: font family. Valid options: Roboto, RobotoCondensed, Bitter, Exo, Magra, SuezOne, Teko

Default: Roboto

Sets the participant label text font weight. Valid options: 100, 200, 300, 400, 500, 600, 700, 800, 900.

Note: Not all font weights are valid for every font family.

Default: 600

Sets the participant label text font size.

Default: 100

Sets the offset value for participant labels on the x-axis. Steps: 0.1

Default: 0

Sets the offset value for participant labels on the y-axis. Steps: 0.1

Default: 0

Sets the participant label font color. Valid options:

  • Hex color codes

  • RGB or RGBA syntax

  • Standard CSS color names (e.g. 'blue')

Default: white

Sets the label font stroke color (the line outlining the text letters). Valid options:

  • Hex color codes

  • RGB or RGBA syntax

  • Standard CSS color names (e.g. 'blue')

Default: rgba(0, 0, 0, 0.9)

Sets the left margin value applied to videos. Steps: 1.

Default: 0

Sets the right margin value applied to videos. Steps: 1.

Default: 0

Sets the top margin value applied to videos. Steps: 1.

Default: 0

Sets the bottom margin value applied to videos. Steps: 1.

Default: 0

Sets the string to be displayed if showTextOverlay is true.

Default:

Sets the horizontal alignment of the text overlay within the video frame. Values are left, right, or center.

Default: center

Sets the vertical alignment of the text overlay within the video frame. Values are top, bottom, or center.

Default: center

Sets an X offset to be applied to the text overlay's position based on the values of text.align_horizontal and text.align_vertical. Steps: 0.1

Default: 0

Sets a Y offset to be applied to the text overlay's position based on the values of text.align_horizontal and text.align_vertical. Steps: 0.1

Default: 0

Applies a rotation to the text overlay. Units are degrees, and positive is a clockwise rotation.

Default: 0

Sets the font of the text overlay. Valid options: Roboto, RobotoCondensed, Anton, Bangers, Bitter, Exo, Magra, PermanentMarker, SuezOne, Teko

Default: Roboto

Selects a weight variant from the selected font family. Valid options: 100, 200, 300, 400, 500, 600, 700, 800, 900.

Note: Not all font weights are valid for every font family.

Default: 500

Sets the font style for text. Valid options: 'normal','italic'.

Default:

Sets the text overlay font size as a percentage of the video frame height. Values are from 0 to 100, so setting this property to 7 will set the font size to 7% of the height of the video frame. Steps: 0.1

Default: 2.5

Sets the color and transparency of the text overlay. Valid options:

  • Hex color codes

  • RGB or RGBA syntax

  • Standard CSS color names (e.g. 'blue')

Default: rgba(255, 250, 200, 0.95)

Sets the color of the stroke drawn around the characters in the text overlay. Valid options:

  • Hex color codes

  • RGB or RGBA syntax

  • Standard CSS color names (e.g. 'blue')

Default: rgba(0, 0, 0, 0.8)

Sets the overlay image. Icon asset must be included in session_assets object. showImageOverlay must be true.

Default: overlay.png

Sets position of overlay image. Valid options: top-left, top-right, bottom-left, bottom-right

Default: top-right

Sets overlay image to full screen.

Default: false

Sets aspect ratio of overlay image. Steps: 0.1

Default: 1.778

Sets height of overlay image. Steps: 0.1

Default: 12

Sets margin height of overlay image. Steps: 0.1

Default: 1.5

Sets opacity of overlay image. Steps: 0.1

Default: 1

Sets the overlay image to fade in or out when the showImageOverlay property is updated.

Default: true
number

Triggers display of toast component. To send a toast, increment the value of key

Default: 0

Sets text displayed in toast component.

Default: Hello world

Sets duration of time toast component is displayed (in seconds).

Default: 4

Sets number of lines text in toast component is displayed on.

Default: 2

Sets whether icon is displayed in toast component (true or false).

Default: true

Sets asset value for toast icon. Icon asset must be included in session_assets object.

Default:

Sets the toast component's background color. Valid options:

  • Hex color codes

  • RGB or RGBA syntax

  • Standard CSS color names (e.g. 'blue')

Default: rgba(15, 50, 110, 0.6)

Sets the color of the stroke drawn around the text characters in the toast component. Valid options:

  • Hex color codes

  • RGB or RGBA syntax

  • Standard CSS color names (e.g. 'blue')

Default: rgba(0, 0, 30, 0.44)

Sets the toast component's text color. Valid options:

  • Hex color codes

  • RGB or RGBA syntax

  • Standard CSS color names (e.g. 'blue')

Default: white

Sets the toast component's font family. Valid options: Roboto, RobotoCondensed, Bitter, Exo, Magra, SuezOne, Teko

Default: Roboto

Sets the font weight for the toast component's text. Valid options: 100, 200, 300, 400, 500, 600, 700, 800, 900.

Note: Not all font weights are valid for every font family.

Default: 500

Sets the font size for the toast component's text.

Default: 100

Session assets

Session assets — including images and fonts — can be included to be made available for VCS customizations. For example, a logo image can be included to use as an image overlay in your video feed.

Session assets must be specified when starting the recording. The asset URLs you pass will be preloaded immediately and cached on the server. This ensures the data is instantly available when your rendering makes use of it (for example, when you send a param update to display the logo overlay).

The session_assets property is optional but must be passed when the stream or recording is started via startLiveStreaming() or startRecording(). Any image assets provided must use the .png file format.

Default values