↓ Skip to main content
  1. Home projects/

upmux: an MPEG-TS re-multiplexer

··

Broadcast video travels as MPEG transport streams, and their program clock (PCR) has to be right or receivers stutter. upmux takes a stream apart and puts it back together with fixed timing, in a pipeline I built on the Upipe framework:

  1. It reads a transport stream from a file or from UDP.
  2. It demultiplexes the stream and frames the elementary streams: H.264, MPEG video, MPEG audio, A/52, teletext and DVB subtitles.
  3. It either passes them straight through, or decodes and re-encodes the video with libavcodec and x264 at a chosen quality (CRF).
  4. It muxes everything again and writes it to a file or UDP.
upmux reads a transport stream, demultiplexes it, either passes the streams through or re-encodes the video, then muxes and writes the result.transportstream indemux andframepass throughdecode, x264chosen quality (CRF)muxstreamoutfile or UDPfile or UDPstreams: H.264, MPEG video, MPEG audio, A/52, teletext, DVB subtitlesseparate worker threads for the source, the codec stages and the sink
The upmux pipeline from input stream to output stream

Under the hood it uses Upipe’s memory pools, a dejitter probe on the clock, and separate worker threads for the source, the codec stages and the sink. You set input, output, CRF, remux-only mode and log level on the command line.

Source on GitHub.

Related