Recording Room Composite as HLS
This example records a room composite layout as HLS segments to a S3 bucket.
When live_playlist_name
is provided, we'll generate a playlist containing only the last few segments. This can be useful to live-stream the recording via HLS.
{"room_name": "my-room","layout": "grid","preset": "H264_720P_30","custom_base_url": "https://my-custom-template.com","audio_only": false,"segment_outputs": [{"filename_prefix": "path/to/my-output","playlist_name": "my-output.m3u8","live_playlist_name": "my-output-live.m3u8","segment_duration": 2,"s3": {"access_key": "","secret": "","region": "","bucket": "my-bucket","force_path_style": true,}}]}
lk egress start --type room-composite egress.json
Recording Web In Portrait
This example records a web page in portrait mode to Google Cloud Storage and streaming to RTMP.
Portrait orientation can be specified by either setting a preset or advanced options. Egress will resize the Chrome compositor to your specified resolution. However, keep in mind:
- Chrome has a minimum browser width limit of 500px.
- Your application should maintain a portrait layout, even when the browser reports a width larger than typical mobile phones. (e.g., 720px width or higher).
{"url": "https://my-page.com","preset": "PORTRAIT_H264_720P_30","audio_only": false,"file_outputs": [{"filepath": "my-test-file.mp4","gcp": {"credentials": "{\"type\": \"service_account\", ...}","bucket": "my-bucket"}}],"rtmp_outputs": [{"protocol": "RTMP","urls": ["rtmps://my-rtmp-server.com/live/stream-key"]}]}
lk egress start --type web egress.json
SRT Streaming With Thumbnails
This examples shows streaming a Participant Egress to a SRT server, and generating thumbnails every 5 seconds. Thumbnails are stored in Azure.
{"room_name": "my-room","identity": "participant-to-record","screen_share": false,"advanced": {"width": 1280,"height": 720,"framerate": 30,"audioCodec": "AAC","audioBitrate": 128,"videoCodec": "H264_HIGH","videoBitrate": 5000,"keyFrameInterval": 2,},"stream_outputs": [{"protocol": "SRT","urls": ["srt://my-srt-server.com:9999"],}],"image_outputs": [{"capture_interval": 5,"width": 1280,"height": 720,"filename_prefix": "{room_name}/{publisher_identity}","filename_suffix": "IMAGE_SUFFIX_TIMESTAMP","disable_manifest": true,"azure": {"account_name": "my-account","account_key": "my-key","container_name": "my-container"}}]}
lk egress start --type participant egress.json
Adding RTMP To Track Composite Egress
This example demonstrates a TrackComposite Egress that starts by saving to HLS, with RTMP output added later.
{"room_name": "my-room","audio_track_id": "TR_AUDIO_ID","video_track_id": "TR_VIDEO_ID","stream_outputs": [{"protocol": "RTMP","urls": [],}],"segment_outputs": [{"filename_prefix": "path/to/my-output","playlist_name": "my-output.m3u8","segment_duration": 2,"s3": {"access_key": "","secret": "","region": "","bucket": "my-bucket"}}]}
lk egress start --type track-composite egress.json# later, to add a RTMP outputlk egress update-stream --id <egress-id> --add-urls rtmp://new-server.com/live/stream-key# to remove RTMP outputlk egress update-stream --id <egress-id> --remove-urls rtmp://new-server.com/live/stream-key
Exporting Individual Tracks Without Transcode
This example exports video tracks to Azure Blob Storage without transcoding. Note: video and audio tracks must be exported separately using Track Egress.
{"room_name": "my-room","track_id": "TR_TRACK_ID","filepath": "{room_name}/{track_id}","azure": {"account_name": "my-account","account_key": "my-key","container_name": "my-container"}}
lk egress start --type track egress.json