FFMPEG Streaming π½οΈ
This guide explains how to use FFmpeg or FFplay to stream WAN video from Rhombus cameras. It includes authentication requirements and example commands.
Prerequisites
Getting Started
Step 1: Obtaining a Federated Session Token
The federated session token is required for authentication when streaming WAN video. You can retrieve this token by hitting the following endpoint:
Endpoint: [api/org/generateFederatedSessionToken]
Description: This endpoint generates a federated session token login for the organization
Parameters:
durationSec
(required): Total duration for the session in seconds. e.g. 24 hours -> 86400
Example Body Request:
{
"durationSec":86400
}
Successful Example Response:
{
"federatedSessionToken": "XXXXXXXXXXXXX"
}
Test here π /generateFederatedSessionToken π
Step 2: Retrieving the WAN Media URI
To stream video from a camera, you will need the WAN media URI. You can retrieve it by hitting this endpoint:
Endpoint: [api/camera/getMediaUris]
Description: This endpoint gets the media URI for a camera in order to retrieve footage
Parameters:
cameraUuid
(required): Camera UUID to get the necessary URIs for streaming
Example Body Request:
{
"cameraUuid": "XXXXXXXXXXXXXXXX"
}
Successful Example Response:
{
"error": false,
"lanCheckUrls": [
"https://IP_ADDRESS.lan.rhombussystems.com:PORT/XXXXXXXXXXXXXXXX/"
],
"lanLiveH264Uris": [
"wss://IP_ADDRESS.lan.rhombussystems.com:PORT/XXXXXXXXXXXXXXXX/ws"
],
"lanLiveM3u8Uris": [
"https://IP_ADDRESS.lan.rhombussystems.com:PORT/XXXXXXXXXXXXXXXX/live/live.m3u8"
],
"lanLiveMpdUris": [
"https://IP_ADDRESS.lan.rhombussystems.com:PORT/XXXXXXXXXXXXXXXX/live/live.mpd"
],
"lanVodM3u8UrisTemplates": [
"https://IP_ADDRESS.lan.rhombussystems.com:PORT/XXXXXXXXXXXXXXXX/store/{START_TIME}_{DURATION}/clip.m3u8"
],
"lanVodMpdUrisTemplates": [
"https://IP_ADDRESS.lan.rhombussystems.com:PORT/XXXXXXXXXXXXXXXX/store/{START_TIME}_{DURATION}/clip.mpd"
],
"wanLiveH264Uri": "wss://IP_ADDRESS.dash-internal.rhombussystems.com:PORT/api/h264/live/XXXXXXXXXXXXXXXX/ws",
"wanLiveM3u8Uri": "https://IP_ADDRESS.dash.rhombussystems.com:PORT/dash/api/outbound/XXXXXXXXXXXXXXXX/SESSION/time/live-v2/file.m3u8",
"wanLiveMpdUri": "https://IP_ADDRESS.dash.rhombussystems.com:PORT/dash/api/outbound/XXXXXXXXXXXXXXXX/SESSION/time/live-v2/file.mpd",
"wanVodM3u8UriTemplate": "https://IP_ADDRESS.dash.rhombussystems.com:PORT/dash/api/outbound/XXXXXXXXXXXXXXXX/SESSION/{START_TIME}/{DURATION}/vod/file.m3u8",
"wanVodMpdUriTemplate": "https://IP_ADDRESS.dash.rhombussystems.com:PORT/dash/api/outbound/XXXXXXXXXXXXXXXX/SESSION/{START_TIME}/{DURATION}/vod/file.mpd"
}
Test here π /getMediaUrisπ
Step 3: Streaming with FFMPEG & FFPLAY
We can now use FFmpeg to stream and save WAN video to a local file.
Here is an example command:
ffmpeg -headers $'x-auth-scheme: api-token\r\nx-auth-apikey: YOUR_API_KEY\r\nCookie: RSESSIONID=RFT:YOUR_FEDERATED_SESSION_TOKEN' \
-i "https://IP.dash.rhombussystems.com:PORT/dash/api/outbound/CAMERA_UUID/SESSION/time/live-v2/file.m3u8" \
-c copy output.mp4
Breaking down the command:
- The
-headers
option adds our required HTTP headers to the request.x-auth-scheme
- specifies the authentication schemex-auth-apikey
- your Rhombus API keyRSESSIONID=RFT
- your Federated Session Token
- i
- specifies the input, we will be using the WAN media URI-c copy
- copies the video stream without re-encoding itoutput.mp4
- the output file where the video stream will be saved
If you want to play the stream directly, you can use FFplay which is simpler than FFmpeg!
Example command:
ffplay -headers $'x-auth-scheme: api-token\r\nx-auth-apikey: YOUR_API_KEY\r\nCookie: RSESSIONID=RFT:YOUR_FEDERATED_SESSION_TOKEN' \
-i "https://IP.dash.rhombussystems.com:PORT/dash/api/outbound/CAMERA_UUID/SESSION/time/live-v2/file.m3u8"
Breaking down the command:
- The
-headers
option adds our required HTTP headers to the request.x-auth-scheme
- specifies the authentication schemex-auth-apikey
- your Rhombus API keyRSESSIONID=RFT
- your Federated Session Token
- i
- specifies the input, we will be using the WAN media URI
This works similarly to the FFmpeg command, but instead of saving the stream to a file, it plays the video in real-time.
Important Notes
- Ensure you have the valid API token and session tokens.
- Make sure the
x-auth-apikey
andRSESSIONID
are replaced with your own credentials.- The federated session token has an expiration time, so you may need to regenerate it periodically.
- For continuous streaming or automation, consider implementing a method to refresh the federated session token as needed.
- These commands are in bash, please update header notation as needed per language syntax.
By following the steps outlined above, you can use FFmpeg and FFplay to stream WAN video from a Rhombus camera.
Updated about 1 month ago