LMinJae / rtmp-rs

RTMP Implementation in Rust
MIT License
11 stars 2 forks source link

RTMFP #1

Open ROBERT-MCDOWELL opened 1 year ago

ROBERT-MCDOWELL commented 1 year ago

Hi, it would be very nice to implement rtmfp too, I can provide some rtmfp C++ or python integration if you wish. do you think your project can be compiled in wasm to be used in browsers?

LMinJae commented 1 year ago

do you think your project can be compiled in wasm to be used in browsers?

Currently, this repo has dependancies on bytes, byteorder(from amf-rs).

If you need to compile this in wasm, make sure all of dependancies should be no_std.

byteorder support it (Reference). so, need to apply to amf-rs

But, problem is bytes. that is not support no_std. so for build this library for wasm, need to replace bytes by no_std library for handling bytes (for example, serde_bytes?)

LMinJae commented 1 year ago

it would be very nice to implement rtmfp too

When I searched to find topic. I interested to RTMFP too. but, I thought it has more complexity. for example, handling NAT hole punching or flow control.

I've started this project as simple, easy explain for understand streaming background. If implement rtmfp(UDP-based P2P protocol), need to implement flow control and congestion control. (although it exist on RTMP protocol, that not captured in real-life usage)

My main objective is readable simple implementation with some writing blog post.

even though I stopped posting for a long time.

  • currently i thought rtmp-ingress should be rewrite, due to too monolithic and bad architecture for production(not tuned for storages).

I've experienced UDP-based P2P contents serving protocol project in 8 years ago. at that time, I've come to realize it needs more deeper explain require like computer network lectures.

As I think, For in-depth knowledge required projects must comes with requirements and constraints. but, as a side (toy) project, it is very weired and just seems like code golf.

ROBERT-MCDOWELL commented 1 year ago

WebRTC implements QUICK protocol which is UDP and very close to RTMFP. dunno if RTMFP can be built on top of QUICK or webtransport (HTTP3) can be also a solution) but for now low level UDP/TCP socket are not possible in browsers unless to bypass the sandbox using a special config approved by the client. webtransport is not p2p and only client-server though. however my skills in WASM are limited but what I know is there is various way to modify the sandbox to allow some feature to run in browsers.

ROBERT-MCDOWELL commented 1 year ago

btw, you are very welcome to join the Ruffle project which is Flash plugin in Wasm Rust running pretty well after 3 years of dev, but still needs 10% API for AVM1 to code and 40% AVM2, including network and streaming classes. https://github.com/ruffle-rs/ruffle