rubenc2/playout

By rubenc2

β€’Updated 11 months ago

G19 FTA MUX Barker Channel Playout

Image
Networking
2

840

rubenc2/playout repository overview

⁠Playout for Intelsat G19 FTA Mux Workflow

Work in progress to continuously loop a specifically crafted MPEG-TS file for ingestion into the Intelsat G19 FTA Mux workflow.


⁠Version 2.0.3 is now released

⁠ST 2022-7 Compliant Output

⁠This was done in true collaboration with Mike McCadden and Bill Burke

We proudly leverage the combined power of FFmpeg and TSDuck in this project.



β πŸ“Œ Versions

⁠0.7.x
  • Stable version with improvements to handle corner cases and maintain playout stability.
⁠0.8.x
  • Based on 0.7.x, but with a custom-compiled, multi-threaded FFmpeg, reducing CPU utilization.
⁠1.1.x Currently
  • Fix a bug where sentinel.out.log keeps increasing (not rotating)
  • Added "Watch Stream" functionality on the Monitor page using video.js and HLS
  • Refine the ffmpeg buffers for better RTP pacing
  • Created a bash script to tweak the hardware for smooth streaming: Interface Queue-Lenght=2000, Socket buffers also increased and CPU governor set to Performance.
  • Added a Swagger to document all available APIs: https:<Your IP>/apidocs
  • Added a small button to the Swagger documentation on the main page
  • Added a permanent "file" as Intelsat Color Bars, this is a synthetic stream with SMPTE bars, it does consume a bit more CPU than playing a regular file
  • In v1.1.4 we attempted to strictly follow RTP pacing, but that caused the number of MPEG-TS packets carried in each UDP packet to fluctuate (sometimes dropping below 7) in order to smooth timing.
  • Release v1.1.5 switched to enforce a constant 7 TS packets per IP packet, trading a bit of timing β€œelasticity” for perfectly consistent packetization
  • Using v1.1.5 the team has successfully tested dual-redundant (coherent) outputs per SMPTE-2022-7.
  • Version 1.1.6 added a soft-reset API end-point as well as an Alert when changes are made to the settings page but the user has not saved them and attempts to leave the page.
⁠2.0.0 No new features were added, but the base OS image was changed to python:3.12-slim, improving the security posture and significantly reducing the image size. The code has also been completely refactored.
  • Version 2.0.2 is now stable. We identified a bug where logs are not rotating, which will be fixed in version 2.0.3.
  • Version 2.0.3 is now released. We identified and fix bugs related to logrotating and bitrate monitoring.
⁠No Further Development is anticipated

β πŸš€ Running the Container

This app is designed to use Multicast, so the --network=host attribute is recommended.

Run the container using the Multicast setup:

docker run -itd --name playout --restart unless-stopped --network=host \
  -e IPADDRESS=<IP> rubenc2/playout:N.X.Y

or

docker run -itd --name playout --restart unless-stopped --network=host \
  -e SERVERNAME=<name> rubenc2/playout:N.X.Y

Note: Replace <IP> or <name> with the appropriate values.


⁠πŸ–₯️ Running on a Laptop (Defaults to localhost)

If running on a laptop or in a non-multicast environment:

docker run -itd --name playout --restart unless-stopped --network=host \
  rubenc2/playout:N.X.Y

⁠πŸ–₯️ Running on macOS/Windows (Without --network=host)

Since --network=host is not available on macOS and Windows, use --privileged and expose required ports manually:

docker run -itd --name playout --restart unless-stopped --privileged \
  -p 8080:80 -p 8443:443 -p 4000-4004:4000-4004/udp \
  rubenc2/playout:N.X.Y

⚠️ Important:
When running without --network=host, you will need to manually add routes to the system to allow multicast traffic to flow outside the container, hence the --privileged flag.


β πŸ“‚ Additional Notes

  • Replace N.X.Y with the correct version number (e.g., 1.1.7).
  • The container will automatically restart unless stopped manually.
  • The multicast configuration requires system-level networking adjustments if not using --network=host.
  • If using multicast, ensure that the network supports IGMP snooping and multicast routing.
  • Running on Windows/macOS may require additional network configuration.

Tag summary

Content type

Image

Digest

sha256:ae8cc0693…

Size

393.2 MB

Last updated

11 months ago

docker pull rubenc2/playout:2.0.3