Stream Ingress¶
Flex Video can automatically transcode streams pushed to the system. When you publish a stream via RTSP or RTMP, a transcoding pipeline is created automatically and the output is made available on the Flex Video RTSP server.
How It Works¶
- Push a stream to Flex Video's ingest server
- A transcoding pipeline is created automatically
- The transcoded output is available as an RTSP stream
- When you stop publishing, the pipeline is cleaned up
No manual pipeline creation is required.
Supported Protocols¶
| Protocol | Ingest URL | Default Port |
|---|---|---|
| RTSP | rtsp://<server>:8554/<stream-name> | 8554 |
| RTMP | rtmp://<server>:1935/<stream-name> | 1935 |
Replace <server> with your Flex Video server's IP address and <stream-name> with any name you choose.
Examples¶
OBS Studio¶
Stream from OBS to Flex Video:
- Open OBS Settings > Stream
- Set Service to "Custom"
- Set Server to
rtmp://<server>:1935/live - Set Stream Key to any name (e.g.,
mystream) - Click Start Streaming
The transcoded output will be available at:
RTSP Camera (Push Mode)¶
Configure an IP camera to push its stream:
- Set the camera's RTSP push destination to
rtsp://<server>:8554/camera1 - The camera starts publishing
The transcoded output will be available at:
FFmpeg¶
Push a local file or device as a stream:
# Push a video file
ffmpeg -re -i video.mp4 -c copy -f rtsp rtsp://<server>:8554/test-stream
# Push a USB camera (Linux)
ffmpeg -f v4l2 -i /dev/video0 -c:v libx264 -f rtsp rtsp://<server>:8554/usbcam
The transcoded output will be available at:
Default Transcoding Settings¶
Ingested streams are transcoded with the following defaults:
| Setting | Value |
|---|---|
| Codec | H.264 |
| Bitrate | 750 kbps |
| Resolution | 1920x1080 |
| Frame Rate | 30 fps |
| KLV Passthrough | Enabled |
| Geolocation Extraction | Enabled |
Custom Settings
To customize transcoding settings for ingested streams, create a pipeline manually via the Pipelines API or the Web Interface instead.
Stream Name Rules¶
Stream names are sanitized to create pipeline IDs. Only alphanumeric characters, dashes, and underscores are kept:
| Stream Name | Pipeline ID |
|---|---|
live/camera-1 | livecamera-1 |
stream.test | streamtest |
cam@123 | cam123 |
Viewing Ingested Streams¶
Once a stream is being ingested, you can:
- Web UI: The pipeline will appear on the main pipeline list page
- API:
curl -k https://<server>:3539/flex/pipeline - RTSP Player: Connect to
rtsp://<server>:8731/<pipeline-id>with an RTSP client. See Receiving & Playback for compatible players and setup.
Troubleshooting¶
Stream Not Appearing¶
- Check that your stream is actually publishing (OBS shows "Live", ffmpeg shows no errors)
- Check the ingest server logs:
docker logs flex-mtx - Check the API logs:
docker logs flex-api
Pipeline Not Created¶
- Check the API logs:
docker logs flex-api - Verify both containers are running:
docker ps
Stream Stops Unexpectedly¶
- Check source stream stability
- Review pipeline status in the Web UI or via API
- Check logs for encoding errors:
docker logs flex-api