Skip to main content

gumd, Grande Unified Multicast Daemon

Project description

"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

Project details


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 hashes)

Uploaded Source

Built Distribution

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

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page