A TCP multi-broadcast media streaming server/client
Go to file
Fierelier ac5c705052 Rewrite 2022-05-29 14:31:07 +02:00
client Rewrite 2022-05-29 14:31:07 +02:00
modules Rewrite 2022-05-29 14:31:07 +02:00
.gitignore Add .gitignore 2021-04-20 16:34:31 +02:00
LICENSE Rewrite 2022-05-29 14:31:07 +02:00
README.md Fix buffer sizes 2021-12-19 11:43:33 +01:00
fsockets.py Rewrite 2022-05-29 14:31:07 +02:00

README.md

fstream

A TCP multi-broadcast media streaming server/client. Check out the past source, for simpler implementation.

Client

  • client.py 127.0.0.1:61920 watch fier exampleChannel 123 | ffplay -i - -fflags nobuffer -flags low_delay -infbuf -fast -framedrop - Watch fier's exampleChannel channel at 127.0.0.1:61920, supplying 123 as a password, and pipe it into ffplay for playback.
  • ffmpeg -f dshow -audio_buffer_size 10 -i audio=virtual-audio-capturer -f gdigrab -framerate 30 -i desktop -vf scale=-1:480 -c:v libx264 -pix_fmt yuv420p -preset fast -tune zerolatency -c:a aac -bufsize 2M -maxrate 1M -f mpegts - | client.py 127.0.0.1:61920 broadcast 8192 fier 123 exampleChannel 456 - Broadcast Windows desktop as fier to 127.0.0.1:61920, supplying 123 as the user password. 8192 is the buffer size (in bytes), exampleChannel is the channel, 456 is the password. Pipe the output from ffmpeg.

Server Protocol

The protocol is currently in an early stage, and is bound to change.
.

Establishing a connection

Establish a TCP connection with the server, and send the payload. If the server likes your payload, it will stream data to you, or accept more of your data.

The payload

Send a UTF-8 string identifying the client's intentions. Fill the request with trailing spaces until the request is 1024 bytes.

  • watch,fier,exampleChannel,123 - Watch fier's exampleChannel channel, supplying 123 as the channel's password. It will blast you with the media data.
  • broadcast,4096,fier,123 - Broadcast as fier into the exampleChannel channel, supplying 123 as the broadcast password and 456 as the channel password. 4096 is the buffer size. Just blast the data to the server after this, with the appropriate buffer size.