Skip to main content

"I've been googling for some time now, and still have yet to find a working example of Python multicast"

Behold gumd.


Grande Unicast M ulticast D aemon


Latest is v.0.0.17

image

  • Install
python3 -mpip install gumd

Use gumd (Daemon) programmatically

>>>> from gumd import GumD
>>>> gumd =GumD('235.35.3.5:3535',ttl=1)
>>>> gumd.send_stream("/home/a/stuff")
stream uri: udp://@235.35.3.5:3535
>>>>

Use gumc (Client) programmatically

>>>> from gumc import GumC
>>>> gumc = GumC("udp://@235.35.3.5:3535")
>>>> data = gumc.read(8)
>>>> data
b'Helloooo'

Cli tools

  • The cli tools gumd and gumc try to install to ~/.local/bin
  • make sure ~/.local/bin is in your path I have this at the end my .bashrc
PLAN9=/home/a/plan9port export PLAN9
PATH=/home/a/.local/bin:$PLAN9:$PATH export PATH

if you dont get them installed, roll your own.

  • gumd (Daemon)
  #!/usr/bin/env python3

  from gumd import cli 

  cli()
  • gumc (Client)
  #!/usr/bin/env python3

  from gumc import cli 

  cli()

Install cli tools


install gumd /usr/local/bin  # or ~/.local/bin
install gumc /usr/local/bin  # or ~/.local/bin


Use gumd (Daemon) cli

  • Supported input mpegts URIs:

    • files gumd -i /home/me/vid.ts

    • http(s) gumd -i https://futzu.com/xaa.ts

    • udp gumd -i udp://127.0.0.1:4000

    • multicast gumd -i udp://@235.1.2.3:4567

    • reading from stdin cat myvideo.ts | gumd

usage: gumd [-h] [-i INPUT] [-a ADDR] [-u] [-b BIND_ADDR] [-t TTL] [-v]

optional arguments:
  -h, --help            show this help message and exit
  -i INPUT, --input INPUT
                        like "/home/a/vid.ts" or "udp://@235.35.3.5:3535" or "https://futzu.com/xaa.ts"
  -a ADDR, --addr ADDR  Destination Address:Port like "227.1.3.10:4310"
  -u, --unicast         Use Unicast instead of Multicast
  -b BIND_ADDR, --bind_addr BIND_ADDR
                        Local IP and Port to bind to like "192.168.1.34:5555". Default is "0.0.0.0:1025"
  -t TTL, --ttl TTL     Multicast TTL 1 - 255
  -v, --version         Show version

start gumd (Daemon) cli

a@debian:~/gumd$ gumd -i /home/a/abc.py 
stream uri: udp://@235.35.3.5:3535
a@debian:~/gumd$ 

use gumc (Client) cli

usage: gumc [-h] [-i INSTUFF] [-b BYTESIZE] [-v]

options:
  -h, --help            show this help message and exit
  -i INSTUFF, --instuff INSTUFF
                        default is 'udp://@235.35.3.5:3535'
  -b BYTESIZE, --bytesize BYTESIZE
                        Number of bytes to read. default is 1
  -v, --version         Show version

start gumc (Client) cli

a@debian:~/build/clean/gumd$ gumc -i udp://@235.35.3.5:3535 -b 1024

Test gumd and gumc together

  • first terminal, start the client, gumc
a@debian:~/build/clean/gumd$ pypy3 gumc.py -b 5 -i udp://@235.35.3.5:3535
  • second terminal,start the daemon, gumd__ and send a "hello"
a@debian:~/build/clean/gumd$ printf 'hello' | gumd -a 235.35.3.5:3535
stream uri: udp://@235.35.3.5:3535

play gumd (Daemon) stream with ffplay

ffplay udp://@235.35.3.5:3535

segment stream from gumd (Daemon) into hls with x9k3

pypy3 x9k3.py -i udp://@235.35.3.5:3535

read 13 bytes from a multicast stream with gumc (Client)

gumc -i udp://@235.35.3.5:3535 -b 13

read 10000 bytes from a multicast stream with gumc (Client)

 gumc -i udp://@235.35.3.5:3535 -b 10000

Note: a multicast client works a little differently than most people expect.

You must specify a size to read or the client will never return.


.

Phase One: Expose the Pep Deep State

* [Phase One has begun](https://github.com/python/peps/compare/main...futzu:peps:main)

image

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gumd-0.0.21.tar.gz (4.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gumd-0.0.21-py3-none-any.whl (5.9 kB view details)

Uploaded Python 3

File details

Details for the file gumd-0.0.21.tar.gz.

File metadata

  • Download URL: gumd-0.0.21.tar.gz
  • Upload date:
  • Size: 4.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.1

File hashes

Hashes for gumd-0.0.21.tar.gz
Algorithm Hash digest
SHA256 f365faa712f88a28140a9454822f5630f47dd954f9e257b1521c62a9e9fe24a2
MD5 a6d25928a73ee07378e14dd92ce4da23
BLAKE2b-256 df1e81907f80da8c6463c02abae9f05394be9a7bbad269e15892740d2ed7026b

See more details on using hashes here.

File details

Details for the file gumd-0.0.21-py3-none-any.whl.

File metadata

  • Download URL: gumd-0.0.21-py3-none-any.whl
  • Upload date:
  • Size: 5.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.1

File hashes

Hashes for gumd-0.0.21-py3-none-any.whl
Algorithm Hash digest
SHA256 a01db0a1fc3a2e1a2f6107ca47d5338fe1b0b406dadbc13d14fac6450239c88f
MD5 19aa1e5f40dfb84266029fad30f119e7
BLAKE2b-256 8399f8fd8ad59a49ef27aa25324f7f318309efe3a3f2784eb684aa3bd56b37a7

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.0.21 This release

2 files

0.0.17

2 files

0.0.15

2 files

0.0.13

2 files

0.0.9

2 files

0.0.7

2 files

0.0.5

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page