Live Translation
What is Live Translation?
Live Translation enables real-time sign language translation of live video streams. Instead of submitting pre-recorded content, you connect a live video source and SignStream continuously transcribes the audio and generates sign language output as the stream progresses.
How It Works
- Connect a live video source — Push an RTMP or SRT stream to SignStream, or provide an HLS manifest URL for SignStream to pull
- Automatic transcription — SignStream transcribes the audio track in real time
- Sign language generation — Transcribed text is translated into sign language and rendered as video
- Output delivery — The signer is delivered as a signer-only HLS/DASH stream, as a picture-in-picture composite of your source with the signer overlaid, or pushed to an RTMP/SRT destination
Glass-to-glass latency is approximately 10 seconds for both signer-only and picture-in-picture output.
Source Types
RTMP Push (RTMP_PUSH)
Push an RTMP stream from your encoder (e.g. OBS, Wirecast, or a hardware encoder) to SignStream-provided endpoints.
- Create a live session with
sourceType: "RTMP_PUSH" - The response includes
rtmpEndpoints— one or more RTMP URLs to configure in your encoder - Start streaming from your encoder to the provided endpoints
- SignStream begins processing automatically when the stream is detected
{
"sourceType": "RTMP_PUSH"
}SRT Push (SRT_PUSH)
Push an SRT stream to a SignStream-provided ingest URL. The response includes ingestUrl and, when a passphrase is configured, srtPassphrase.
{
"sourceType": "SRT_PUSH",
"srtConfig": {
"passphrase": "your-passphrase",
"keyLength": 16,
"latency": 200
}
}HLS Pull (HLS_PULL)
Provide an HLS manifest URL and SignStream pulls the stream automatically.
- Create a live session with
sourceType: "HLS_PULL"and anhlsSourceUrl - SignStream connects to your HLS manifest and begins pulling segments
- Processing starts automatically
{
"sourceType": "HLS_PULL",
"hlsSourceUrl": "https://example.com/live/stream.m3u8"
}When you combine HLS_PULL with picture-in-picture output, your source manifest is validated against a codec and packaging contract at session creation. See HLS source requirements.
Output Types
HLS + DASH (default)
The sign language translation is made available as both an HLS manifest and a DASH manifest, written side-by-side and served from the same session prefix. The session response includes a manifests object with manifests.hls (.m3u8) and manifests.dash (.mpd) — pick the one that fits your player.
{
"sourceType": "RTMP_PUSH",
"outputType": "HLS"
}Live DASH manifests are served with Content-Type: application/dash+xml in the live profile. The outputManifestUrl field remains for backwards compatibility and is byte-for-byte equal to manifests.hls.
This output is signer-only — it carries the digital signer on a plain background and nothing else. Compose it against your own video player-side, or use picture-in-picture below to have SignStream do the compositing for you.
RTMP
The sign language translation is pushed to your RTMP destination. Provide an rtmpOutputUrl (and optionally an rtmpOutputStreamKey) when creating the session.
{
"sourceType": "RTMP_PUSH",
"outputType": "RTMP",
"rtmpOutputUrl": "rtmp://your-server.com/live",
"rtmpOutputStreamKey": "your-stream-key"
}SRT
The sign language translation is pushed to your SRT destination. Provide an outputDestinationUrl and, optionally, an outputSrtConfig.
{
"sourceType": "SRT_PUSH",
"outputType": "SRT",
"outputDestinationUrl": "srt://your-server.com:9000",
"outputSrtConfig": {
"latency": 200
}
}Picture-in-Picture (composite HLS)
Set pictureInPicture: true on session creation and SignStream composites the digital signer directly onto your source video, server-side, and publishes the result as a third HLS stream. Your player pulls one URL and gets a finished, accessible broadcast — no client-side overlay work.
{
"sourceType": "RTMP_PUSH",
"outputType": "HLS",
"pictureInPicture": true
}The session response gains manifests.pip alongside the signer-only manifests:
{
"sessionId": "ls_abc123def456",
"status": "active",
"outputType": "HLS",
"pictureInPicture": true,
"manifests": {
"hls": "https://output.signapsesolutions.com/live/ls_abc123def456/index.m3u8",
"dash": "https://output.signapsesolutions.com/live/ls_abc123def456/manifest.mpd",
"pip": "https://output.signapsesolutions.com/live/ls_abc123def456/pip/index.m3u8"
}
}What you get
| Property | Value |
|---|---|
| Container | fMP4 / CMAF low-latency HLS (.m4s segments, one init.mp4) |
| Signer placement | Bottom-right, grounded flush to the bottom edge with a proportional side inset |
| Signer size | Approximately 20% of the output frame by area |
| Background | The signer’s backplate is keyed out, so your source video shows through around her |
| Live window | 45 seconds of playable history |
| Latency | ~10 seconds glass-to-glass, matching signer-only |
Behaviour and limits
- Source types —
RTMP_PUSH,SRT_PUSH, andHLS_PULLall support picture-in-picture. - Output type —
manifests.pipis only produced whenoutputTypeisHLS. SettingpictureInPicture: truealongsideRTMPorSRToutput does not produce a composite. - Signer-only output is unaffected —
manifests.hlsandmanifests.dashkeep serving the signer-only stream for the same session, so you can consume both. - Layout is fixed — placement and size are not configurable through the API today. Contact support@signapse.ai if your broadcast needs a different position or scale.
- Between sentences the signer holds her final frame rather than looping her last clip, so the overlay stays still instead of replaying signs.
HLS_PULLsources are validated up front against the HLS source requirements — sources outside the canonical shape are normalized automatically where possible, and rejected with a400where they cannot be.
Every URL inside the composite and signer-only manifests is CloudFront-signed, including segment, partial, init, and preload-hint URLs. See Playing back protected media.
Session Lifecycle
Each live session follows a defined status flow:
| Status | Description |
|---|---|
INITIALIZING | Session is being set up and resources are being provisioned |
PENDING | Session is ready and waiting for the input stream |
RUNNING | Actively processing the live stream and generating output |
STOPPING | Session is shutting down |
STOPPED | Session has ended normally |
FAILED | Session encountered an error — check the error field for details |
The REST API surfaces a condensed external status on the session object: active, finalizing, or ended. A failed session reports ended with the failure in error.
Getting Started
- Authenticate — Include your API key in the
X-API-KEYheader (Authentication) - Create a session —
POST /v2/live/sessionswith your source and output configuration (Create Live Session) - Start streaming — For RTMP or SRT Push, configure your encoder with the provided endpoints. For HLS Pull, streaming begins automatically.
- Consume output — Play
manifests.hls/manifests.dashfor the signer-only stream, ormanifests.pipfor the composite. For RTMP and SRT output, check your destination. - Stop the session —
DELETE /v2/live/sessions/:idwhen finished (Stop Live Session)
Monitor your sessions at any time using the List and Get endpoints below.