Development of a system to insert subtitles into an existing transport-stream

Michael Cullen
Published

0
  • Project creator

The task was to take an existing MPEG-2 transport stream, and merge in DVB-TXT subtitles live, using subtitles delivered over EBU-TT live (using a websocket)

I designed and implemented, using some existing building blocks where possible, a program to read the input transport stream and create a low-resolution, low-latency preview to be sent to subtitlers. The subtitles were then received via a websocket in EBU-TT format (XML) and encoded as DVB-TXT, then merged into the existing stream.

The DVB-TXT encoder was written in Rust, since it requires a lot of data manipulation, and therefore is ideal for Rust’s safety guarantees.

The preview stream was generated using FFMpeg for encoding, and Nablet’s MPEG-2 muxer for mulitplexing. We considered using WebRTC for this, however the customer decided it was too hard to deploy for their network.