Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Roadmap #28

Open
46 of 53 tasks
mickel8 opened this issue Nov 29, 2023 · 11 comments
Open
46 of 53 tasks

Roadmap #28

mickel8 opened this issue Nov 29, 2023 · 11 comments
Assignees

Comments

@mickel8
Copy link
Member

mickel8 commented Nov 29, 2023

0.1.0 (01.2024)

Media reading/writing:

PeerConnection API:

Documentation:

0.2.0 (04.2024)

RTCP related:

ICE features:

0.3.0 (07.2024)

UX improvements/features:

Integrations:

Fishjam:

  • Experimental WebRTC Endpoint using Elixir WebRTC

Broadcaster improvements:

0.4.0 (08.2024)

Website

Broadcaster

ExWebRTC

UX

0.5.0 (09.2024)

  • DataChannels! 🎉

Others

If you have any questions or need help with a specific topic, please create a new discussion!

  • Support for AV1 codec, see AV1 payloader #35
  • Jitter buffer
  • TCP ICE
  • Support for Windows
  • ex_webrtc_dashboard - performance optimizations
  • bandwidth estimation/probing
  • telemetry (?)
@mickel8 mickel8 pinned this issue Nov 29, 2023
@davydog187
Copy link

Very interesting project! Would you consider supporting AV1 RTP encoding as well?

@mickel8
Copy link
Member Author

mickel8 commented Dec 7, 2023

Very interesting project! Would you consider supporting AV1 RTP encoding as well?

@davydog187 of course! When it comes to the echo example we already support it! It's as easy as telling PeerConnection to negotiate AV1. Just change this line to:

        {:ok, pc} =
          PeerConnection.start_link(
            ice_servers: @ice_servers,
            video_codecs: [
              %RTPCodecParameters{
                payload_type: 45,
                mime_type: "video/AV1",
                clock_rate: 90_000
              }
            ]
          )

Besides this, we will of course add AV1 RTP payloader and depayloader so that you can pack/unpack AV1 into/from RTP packets 🙂

@mickel8
Copy link
Member Author

mickel8 commented Dec 7, 2023

#33 also adds AV1 to the default video codecs

@lovebes
Copy link

lovebes commented Feb 14, 2024

This is really cool! How would this interact with Membrane Framework?

@LVala
Copy link
Member

LVala commented Feb 14, 2024

@lovebes at some point we will wrap our ExWebRTC.PeerConnection in a Membrane sink/source, then you'll be able to send/receive media from WebRTC and pass it further into a Membrane pipeline.

@ris-work
Copy link

ris-work commented Mar 2, 2024

Thanks for this, the code looks very friendly to use, like membrane.framework! Any idea about DataChannels on the roadmap?

I work a lot with webrtc-rs and I will try to port my codebase to Elixir too, if possible. For the client side deployments, relay support is sometimes really necessary from what I have noticed, but not for servers and those who have SNAT or some properly working CGNATs. Hopefully IPv6 support will make them redundant but IPv6 is only deployed where I live, in the fiber deployments and only in new routers. My usecase only relies on DataChannels and would love to have it in a memory-safe language like Elixir or Rust.

I will eventually port everything to Elixir as it seems like things are easier to manage here over tokio and async rust, given better or equal CPU usage (BEAM is especially suited for soft-RT systems), at least on *nix.

@mickel8
Copy link
Member Author

mickel8 commented Mar 3, 2024

Hi @ris-work!
Datachannels are of course on our radar but unfortunately not in 0.2. Maybe in 0.3 or 0.4. But any contributions are welcomed!

@ris-work
Copy link

ris-work commented Mar 4, 2024

Hi @ris-work! Datachannels are of course on our radar but unfortunately not in 0.2. Maybe in 0.3 or 0.4. But any contributions are welcomed!

Thank you very much for the response! I will be eagerly waiting. Unfortunately, I am neither an expert in WebRTC nor Elixir (or SCTP/RTP), but thank you for considering it for an upcoming version!

@type1fool
Copy link

I am also excited to see this package developing so quickly.

There are a couple use cases I have in mind that would depend on data channels. For one, it would be cool to deploy gaming app with elixir-desktop, where two peers could connect directly without an external signaling server.

It's still early in my WebRTC journey, but if I can find time to support implementation, I'd be happy to do so.

@mickel8
Copy link
Member Author

mickel8 commented Sep 10, 2024

Hi guys, support for DataChannels just landed in version 0.5.0! We will publish a blog post next week but I wanted to let you know right now 🙂

cc @ris-work @type1fool

@ris-work
Copy link

Thanks @mickel8 and @LVala for this and thanks for the notification! I will start using this soon!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants