Update 'README.md'

This commit is contained in:
Fierelier 2022-05-29 13:24:01 +00:00
parent 91f9455c7a
commit fa600e7b16
1 changed files with 35 additions and 4 deletions

View File

@ -2,9 +2,38 @@
A TCP multi-broadcast media streaming server/client. [Check out the past source](/Fierelier/fstream/src/commit/1890b316f543f579e9a63f3a2ddb689eeef9c855), for simpler implementation.
# Client
You can send and receive any data using the right software. Here are some examples with ffmpeg:
- `fstream.py 127.0.0.1:61920 watch,user=fier,channel=exampleChannel,channel-password=123 | ffplay -i -` - 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 gdigrab -framerate 30 -i desktop -vf scale=-2:480 -c:v libx264 -pix_fmt yuv420p -maxrate 1M -f h264 - | fstream.py 127.0.0.1:61920 broadcast,user=fier,user-password=123,delay=0.1,channel=exampleChannel,channel-password=456` - Broadcast Windows desktop as `fier` to `127.0.0.1:61920`, supplying `123` as the user password with a server loop-delay of `0.1` seconds. `exampleChannel` is the channel, `456` is the channel's password. Pipe the output from ffmpeg.
## Broadcast
`fstream.py <ip:port> broadcast,[key=value],[key=value],...`
Accepts data from stdin, and sends it to the specified server.
### Arguments
- **`user`**: Your user's name.
- **`user-password`**: Your user's password.
- **`channel`**: The channel you wanna stream to. Can be any name.
- **`channel-password`**: The channel's password.
- **`loop-delay`**: How long should the server wait between each acquisition of data, in seconds? Higher values will cause more delay, but will also store more data in the backlog (good for laggy watchers). Lower values for lower delay.
All arguments are optional but for `user`.
### Example
`ffmpeg -f gdigrab -framerate 30 -i desktop -vf scale=-2:480 -c:v libx264 -pix_fmt yuv420p -maxrate 1M -f h264 - | fstream.py 127.0.0.1:61920 broadcast,user=fier,user-password=123,delay=0.1,channel=exampleChannel,channel-password=456`
Broadcast Windows desktop as `fier` to `127.0.0.1:61920`, supplying `123` as the user password with a server loop-delay of `0.1` seconds. `exampleChannel` is the channel, `456` is the channel's password. Pipe the output from ffmpeg.
## Watch
`fstream.py <ip:port> broadcast,[key=value],[key=value],...`
Accepts data from the server, and sends it to stdout.
### Arguments
- **`user`**: The user you wanna watch.
- **`channel`**: The user's channel you wanna watch.
- **`channel-password`**: The channel's password.
### Example
`fstream.py 127.0.0.1:61920 watch,user=fier,channel=exampleChannel,channel-password=123 | ffplay -i -`
Watch `fier`'s `exampleChannel` channel at `127.0.0.1:61920`, supplying `123` as the password, and pipe it into ffplay for playback.
# Server
## Settings
@ -23,4 +52,6 @@ If you would like to implement your own authentication, make your own module to
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 the length of the payload as a 4-byte (32-bit) big endian unsigned integer, a null byte (hex:`00`) and a UTF-8 encoded string identifying the client's intentions. For example: `watch,user=fier,channel=exampleChannel,channel-password=123` or `broadcast,user=fier,user-password=123,delay=0.1,channel=exampleChannel,channel-password=456`. If you are a watcher, you will be blasted with data. If you are a broadcaster, you can now blast data.
Send the length of the payload as a 4-byte (32-bit) big endian unsigned integer, a null byte (hex:`00`) and a UTF-8 encoded string identifying the client's intentions, for example: `watch,user=fier,channel=exampleChannel,channel-password=123` or `broadcast,user=fier,user-password=123,delay=0.1,channel=exampleChannel,channel-password=456`.
If you are a watcher, you will now be blasted with data. If you are a broadcaster, you can now blast data.