Supported protocols:

UDP - send over a UDP port. 
    example:
        stransmit-rs \ udp://:1234 \
            # ^- bind to interface 0.0.0.0:1234 and listen for data \ udp://127.0.0.1:2345 \
            # ^- bind to interface 0.0.0.0:0 (any port) and send to 127.0.0.1:2345 Connection modes:
    * listen: bind to a local port. Can only be used for receiving data (first parameter). Is specified by leaving out host in the URL:
          udp://:1234 ^- bind to port 1234,  waiting for data

          udp://:1234?interface=127.0.0.1  ^- bind to port 1234 on loopback interface, waiting for data

    * send: send to a remote host. Can only be used for sending data (second parameter). Is specified by including a host in the URL:
          udp://127.0.0.1:2000 ^- bind to port 0 (an ephemeral port), and send data to 127.0.0.1:2000

          udp://127.0.0.1:2000?local_port=3000 ^- bind to port 3000 and send data to 127.0.0.1:2000 

    Settings: * interface=<IP address> the interface to bind to, defaults to 0.0.0.0
    * local_port=<number>    the local port to bind to. Only applicable for send connection mode


 SRT - send over a SRT connection
    example: stransmit-rs \
            srt://:1234 \ # ^- bind to interface 0.0.0.0:1234 and listen for a connection \
            #    with 2 seconds of TSBPD latency \ srt://127.0.0.1:1235 \
            # ^- bind to interface 0.0.0.0:0 (any port, unless local_port is #    specified) and try to connect to 127.0.0.1:1235

    Connection modes: * listen: listen for a connecter. Can be used for either sending or
      receiving data. Is specified by leaving out host in the URL: srt://:1234
          ^- bind to port 1234, waiting for a connector. Uses the connecter's latency
          
          srt://:1234?latency_ms=2000 ^-bind to port 1234 and advertise a latency of 2000.

    * connect: connect to a listener. Can be used for either sending or receiving data. Is specified by including a host in the URL:
          srt://127.0.0.1:1234?latency_ms=1000     ^- bind to port 0 (an ephemeral port), and connect to 127.0.0.1:1234,
             advertising a 1s latency srt://127.0.0.1:1234?local_port=3000  
          ^- bind to port 3000 and connect to 127.0.0.1:123 * rendezvous: connect to another rendezvous connecter. This is useful if 
      both sides are behind a NAT, in which case the host needs to be the public IP and port. Is specified by including the rendezvous flag:
          srt://example.com:1234?rendezvous ^- bind to port 1234 and connect to example.com:1234

          srt://example.com:1234?rendezvous&local_port=2000 ^- bind to port 2000 and connect to example.com:1234


    Settings: * interface=<ip address>  the interface to bind to, defaults to all (0.0.0.0)
    * latency_ms=<number>     the milliseconds of TSBPD latency to use. If both sides set this, the higher setting is used
    * rendezvous              use the rendezvous connection method * local_port=<number>     the local port to bind to. Only applicable for 
                              rendezvous and connect connection modes * multiplex               allow multiple connections on the single port, only
                              applicable for listen connection mode, in the sender position
 FILE - save or send a file
    example:
        stransmit-rs \
            ./a.txt \
            # ^- send a.txt \
            udp://127.0.0.1:2000
            # ^- to a UDP port

    You can use the special - file to redirect from/to stdin/stdout:

    example:
        stransmit-rs \
            - \
            # ^- get data from stdin \
            srt://:2000
            # ^- send data over SRT on port 2000
