A TCP multi-broadcast media streaming server/client
.gitignore | ||
client-threaded.py | ||
client.py | ||
fstream-util-pipe_to_tcp.py | ||
fstream-util-tcp_to_pipe.py | ||
README.md | ||
server.py |
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
- Watchfier
'sexampleChannel
channel at127.0.0.1:61920
, supplying123
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 8092 fier 123 exampleChannel 456
- Broadcast Windows desktop asfier
to127.0.0.1:61920
, supplying123
as the user password.8092
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
- Watchfier
'sexampleChannel
channel, supplying123
as the channel's password. It will blast you with the media data.broadcast,4096,fier,123
- Broadcast asfier
into theexampleChannel
channel, supplying123
as the broadcast password and456
as the channel password.4096
is the buffer size. Just blast the data to the server after this, with the appropriate buffer size.