Live stream recording

Recording your live streams

This document is specifically for recording the HLS streams. To learn more about recording your conference calls, you can refer to this document. 100ms offers two major output formats for your HLS stream recordings. You can choose to record in either or both formats.

Video-on-demand (VOD) recording

Get HLS VOD file which enables replayable recorded streams.

Read more →

Single file per layer

Get single recording files (MP4) for different resolution layers.

Read more →

Note - External Streaming

Recordings of External Streams (RTMP-Out) are similar to Room Composite Recording. They will be recorded in a single chosen resolution layer and generate a MP4 file. This recording will be a recording asset of type room-composite.

Video-on-demand (VOD) recording

This recording is a HLS file (chunked MP4 with a manifest file (M3U8)), which can be used for replaying the recorded HLS streams. This option is more suitable for video-on-demand use-cases as it has adaptive bitrate (ABR).

Configuring VOD recordings

  1. Configure your recording storage. Use this guide as your reference. Based on the storage upload type chosen (100ms storage or other cloud providers), the options supported to upload the VOD recording will differ.

  2. Enable and configure your live stream settings on the dashboard.

  3. Enable and configure the Stream Recording settings under the Live Streaming tab on the 100ms dashboard.

  4. When configuring the recording settings, ensure the following options are selected correctly:

    1. Resolution Layers - This defines the renditions of video for the VOD recording. You can set this same as the ones configured (default) for the live stream or choose a subset of the layers from the ones configured for the live stream.

    2. Type of Recording - Select VOD (On-demand playback) from the dropdown menu. This makes the recording available in HLS format.

    3. VOD Upload Format - This option specifies the mode of uploading the VOD output to the configured cloud storage. We support two modes as of now - Unzipped and Zipped. By default, it will be 'Unzipped' for any newly created template.

      1. Unzipped - The VOD asset is directly uploaded to the configured storage. The following table will show the differences between 100ms and other cloud storage configuration.

        100ms HostedUser Cloud Bucket (Non-100ms)
        Supports only Unzipped VOD upload mode.Supports both Unzipped and Zipped VOD upload mode.
        CDN Playback URL is returned in pre-signed URL which can be played on any compatible player.Pre-signed URL of the M3U8 file is returned which is not playable. The CDN playable link needs to be generated by the customer.

        Note on on-demand playback via CDN

        • Beta Offer: On-demand playback via CDN is currently offered for free during its Beta phase. This will be a chargeable service in the future.
        • Asset Storage Policy: VOD assets are stored for 15 days in 100ms storage as per the current policy. Asset expiry duration will be customizable after the Beta phase concludes.
      2. Zipped - The HLS VOD asset is zipped up and uploaded as a single ZIP file to the configured storage. 100ms only returns the pre-signed URL of the uploaded ZIP file. It is the responsibility of the customers to enable a workflow to unzip the files, make it available on their CDN and generate the playback URL.

    4. Validity of Download URLs: This sets the expiry for the pre-signed URLs that are generated.

    5. Recording Thumbnail - Enable this option to generate thumbnails for the VOD asset.


Users can also configure their recording settings through the Policy API or provide a run-time configuration using the Live streams API.

The following video will do a walkthrough of the settings.

Important Note - Zipped Recording Files

  • For all the templates created before 27th August 2023, the HLS VOD asset file is zipped and uploaded, irrespective of the storage you've configured.
  • For older templates with recordings hosted on 100ms, you have an option to switch from Zipped to Unzipped asset files upload, but you cannot switch back once you've saved that setting.

Fetching VOD recordings

There are 3 methods to access and consume the recordings.

  • All files generated post recording are called Recording Assets. These will include various video and stream recordings, chat, transcripts and summary. They are accessible through the Recording Assets API. - VOD Recording is generated as an asset type called room-vod. Depending upon your choice of zipped or unzipped uploads, you can access the asset ID as well as the path using the GET recording asset API. - If the configured recording storage is 100ms, use GET pre-signed URL API to get the CDN URL which can be inputted in a compatible player to enable on-demand playback. - If the configured recording storage is your cloud bucket (Amazon S3, Google Cloud Storage, Alibaba OSS), the GET pre-signed URL API will return the pre-signed URL of M3U8 file. This file is not usable as it is not playable unless you connect your cloud bucket to a CDN and generate a playback URL to enable on-demand playback.

Single recording file per resolution layer

Based on the chosen resolution layers for live streaming, you can choose to record all or selected resolution layers and generate a MP4 file for each of those layers. This can be done in the following way. Also, Since the generated files are MP4, VOD Upload Format is not relevant to this.

Configuring MP4 recordings

The process is similar to configuring VOD recordings. The only difference in the process is to make sure you select 'Video files per layer' option in Type of Recording drop down menu under the Stream Recording option.

select Video files per layer in Type of Recording

Fetching the recordings

The method of retrieving these recordings is same as mentioned above. Only thing to note is that the these recordings have an asset type called room-composite and they will be available in the resolutions selected in the template.

Have a suggestion? Recommend changes ->

Was this helpful?