Flussonic Media Server Documentation

Contents

Sending a Multicast

When working with IPTV, one often has to deal with videos transmitted as multicasts. In most cases, a multicast contains an MPEG-TS container (7 188-byte packets in each UDP packet). Less frequently, the RTP video in transmitted into the network that contains the same MPEG-TS. RTP is needed to make it possible to track the losses, since the RTP packet contains a 16-bit counter that is used to track sequence numbers.

Brief basics of multicast

A multicast is a set of UDP packets distributed from the same source to a group of subscribers. The address to which packets are sent is usually in the range between 224.0.0.0 and 239.255.255.255, however, 224.0.0.0/8 is not recommended due to the large number of special addresses.

In a properly configured network, multicast traffic is sent to the nearest router, and the router itself chooses the client to send the traffic to, based on the requirements of the clients. The requirements are transmitted via the IGMP protocol that is used for transmitting messages about the need to include some address into the distribution group, or exclude it from the group.

Therefore, in order to make Flussonic send multicast to client devices, it is necessary to make it send the packets to the proper interface (in a local operator network), and the router should be configured to work correctly with multicast.

Ingesting of multicast streams is described in Receiving multicast.

Configuring Flussonic

To configure a multicast distribution, it is enough to specify the push option in stream settings. The push option specifies the multicast address:

stream origin {
  url fake://fake;
}
stream example {
 url hls://localhost:80/origin/index.m3u8;
 push udp://239.0.0.1:1234;
}

Flussonic supports also the scheme udp2:// but as the UDP2 protocol is relatively new, you may prefer udp://.

You can also create a stream via the web interface: create a new stream, specify the source URL (on the Input tab) and add the multicast address udp://239.0.0.1:1234 in the stream settings (on the Output tab in the section Push live video to certain URLs).

Selecting tracks

You can select what tracks to send:

stream origin {
  url fake://fake;
}
stream example {
 url hls://localhost:80/origin/index.m3u8;
 push udp://239.0.0.1:1234?tracks=v1a1;
}

Here, v1 stands for the 1st video track and a1 for the 1st audio track.

Interface name (v20.05)

If you do not remember the IP address of the interface from where the multicast will be sent, you can specify its name:

push udp://eth0@239.0.0.1:1234

instead of

push udp://239.0.0.1:1234/10.0.0.5

Example:

stream ort {
  url hls://provider.iptv/ort/index.m3u8;
  push udp://eth0@239.0.0.1:1234;
}

Here eth0 is the name of the interface that looks into a local network.

Configuring the server

After you set up multicasting, chances are that nothing will work, since very often, due to server settings, multicast traffic is sent to the first interface, which usually looks into the Internet. You need to make Flussonic start sending traffic to an interface that looks into a local network.

route add -net 239.0.0.0/8 dev eth2

Here, eth2 is the name of the interface connected to the local network. After you set up routing in this way, the multicast from Flussonic will be routed to the proper interface, and you can check it at the router, and at the client.

Specifying PIDs

When sending MPEG-TS to UDP multicast (push udp://), specify PIDs by using the option mpegts_pids. This option is used only with push udp://.

When sending to UDP2 (push udp2://) specify PIDs as follows (v20.08):

push udp2://239.1.2.4:1235 bitrate=7000 pnr=2 vb=6000 pmt=2000 v1=2011 a1=2021;