Skip to main content

Livestreaming any Video via RTMP (Custom Input)

Dyte can livestream video from any application like OBS, ffmpeg that can stream via RTMP in a few simple steps.

Step 1: Generate credentials for a livestream

This step generates credentials and ingest URLs for the livestream.

Request

curl --location --request POST 'https://api.cluster.dyte.in/v2/livestreams' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic ZGVtbzpwQDU1dzByZA==' \
--data-raw '{
"name": "test_livestream"
}'

Response

The response contains the ingest_server, livestream id, stream_key, and playback_url.

{
"success": true,
"data": {
"status": "OFFLINE",
"name": "test_livestream",
"meeting_id": null,
"ingest_server": "rtmps://2bd803bb7b1.global-contribute.live-video.net:443/app/",
"id": "9fb22eea-3392-42ad-b884-1129a4f517d2",
"stream_key": "sk_ap-south-2_JKLBQlfOE_eb14jL5zj3lbj58xHSb",
"playback_url": "https://2bd803bb7b1.ap-south-1.playback.live-video.net/api/video/v1/ap-south-1.944908621410.channel.e1lAS0BHpDxP.m3u8"
}
}
ParametersDescription
ingest_serverThe ingest server URL in RTMP livestreaming is the server URL to which the RTMP encoder sends the video and audio data. The ingest server receives the RTMP stream and transcodes it into different video formats and bitrates, which can then be distributed to viewers through a content delivery network (CDN). It is essentially the address of the server where the video data is sent to be processed and distributed for live streaming. You need to enter the ingest_server along with stream_key in your application. See step 2.
idThis is your livestream ID.
stream_keyThe stream key in RTMP livestreaming is a unique identifier that is used to authorize and link the RTMP encoder to a specific live stream. The stream key is like a password that allows the encoder to access the specific live stream on the server and start sending data to it. It is an important security measure to prevent unauthorized access to the live stream, as the stream key is needed to begin streaming to a specific event or channel. It's important to keep the stream key safe and secure. You need to enter the stream_key in your application. See step 2.
playback_urlThe playback URL is the web address that viewers can use to watch the live stream. Viewers can enter the playback URL into their web browser or use a media player that supports HLS or LHLS streaming to watch the live stream.

Step 2: Specify RTMP ingestion URL for livestreaming

In your application, enter the ingestion URL you generated in Step 1.

You must enter the ingest server URL and stream key separately in OBS.

obs-exampleInput stream added to the OBS

However, for ffmpeg, you must specify both the ingest URL and the stream key together. For example,

ffmpeg -re -f lavfi -i "testsrc=size=1280x720 [out0]; sine=frequency=500 [out1]" \
-acodec aac -vcodec h264 -f flv \
rtmps://2ec802dd47b0.global-contribute.live-video.net:443/app/sk_ap-south-1_nDT9sbq3qZyf_SYSyPE7wnVGUQYNyejMe6Z3n

Fetch details of active livestreams

Using the livestream ID that you generated in Step 1, you can fetch details of active livestreams.

Request

This request returns the ingest_seconds, viewer_seconds, ingest_server, id, stream_key, and playback_url.

curl --location \
--request GET 'https://api.cluster.dyte.in/v2/livestreams/9fb22eea-3392-42ad-b884-1129a4f517d2' \
--header 'Authorization: Basic ZGVtbzpwQDU1dzByZA=='
note

The ingest and viewer seconds details are returned after 40-50 seconds; until then, they default to sixty.

Response

{
"success": true,
"data": {
"status": "OFFLINE",
"name": "test_livestream",
"meeting_id": null,
"ingest_seconds": 0,
"viewer_seconds": 0,
"ingest_server": "rtmps://2bd803bb7b1.global-contribute.live-video.net:443/app/",
"id": "9fb22eea-3392-42ad-b884-1129a4f517d2",
"stream_key": "sk_ap-south-2_JKLBQlfOE_eb14jL5zj3lbj58xHSb",
"playback_url": "https://2bd803bb7b1.ap-south-1.playback.live-video.net/api/video/v1/ap-south-1.944908621410.channel.e1lAS0BHpDxP.m3u8"
}
}