Supported protocols:

 TCP - send over a TCP connection
    example:
        srt-transmit
            tcp://host:1234 \
                # ^- connect to host:1234 \
            tcp://:1234
                # ^- bind to interface 0.0.0.0:1234 and listen for data
    Settings:
    * interface=<IP address> the interface to bind to, defaults to 0.0.0.0

 UDP - send over a UDP port.
    example:
        srt-transmit
            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:
        srt-transmit \
            srt://:1234 \
                # ^- bind to 0.0.0.0:1234 and listen for a connection \
                #    with 2 seconds of TSBPD latency \
            srt://127.0.0.1:1235 \
                # ^- bind to 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
    * passphrase              the passphrase to use for encryption/decryption. Must match the other side.
    * pbkeylen                the key length to use for encryption. Defaults to 0, unless passphrse is passed,
                               in which case 16 is the default. Must be 16, 24, or 32
    * autoreconnect              should the socket reconnect after connection is broken. Default is false, specify for true
    * peeridletimeout_ms      how long to wait from last contact with the peer to shutdown, in milliseconds. Default is 5000 ms
    * stats                   print basic stats every second

 FILE - save or send a file
    example:
        srt-transmit \
            ./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:
        srt-transmit \
            - \
            # ^- get data from stdin \
            srt://:2000
            # ^- send data over SRT on port 2000
