Skip to content

Transcoding reflector

Martin Pulec edited this page Feb 6, 2020 · 3 revisions

For basic info about reflectors you can look at this page.

Transcoding reflector has 2 modes how to handle incoming data stream. Please note that one running instance of transcoding reflector can act in both modes - one output "port" can be transcoding while the second not.

  • packet reflector - this mode is undistinguishable from normal packet reflector. In this mode, reflector simply retransmits received packets to new destination without altering it in any way. In this mode, some features like change of MTU, compression, blending etc. are not available.
  • transcoding reflector - in this mode, stream is decoded and can then be recompressed, MTU or FEC can be changed as well. Capture filter or blanding can be applied. Rule of thumb is that output port is in transcoding state any time when -c (compression) is specified, even if it is "none" for uncompressed transmission.

Running reflector at the sender

Running the reflector at the sender is a bit different than running at different machine. This is because of port selection scheme - reflector needs to listen at different port number than UltraGrid sender. Therefore, when running on single computer, you'd need to specify ports more explicitly:

sender$ uv -t testcard -c libavcodec:codec=H.264 -s testcard --audio-codec OPUS -P 6004

sender$ hd-rum-transcode 8M 6004 -P 5004 receiver1 -P 5004 receiver2 # video

sender$ hd-rum-transcode 8M 6006 -P 5006 receiver1 -P 5006 receiver2 # audio (uses port+2)

Receivers can be then simply (because 5004 and 5006 are default UG ports):

receiverX$ uv -d gl -r alsa

In this setup, both reflectors are packet-retransmitting reflectors. This is only option for audio. For video, it is possible also perform transcoding:

hd-rum-transcode 8M 6004 -P 5004 -c JPEG -m 9000 receiver1 -P 5004 receiver2

In this case, packet retransmission is used for receiver2. Transcoding to JPEG is performed for receiver1 and Jumbo frames are used (changing packet size is possible only when transcoding).

See also

Clone this wiki locally