C Webrtc

Open-source C projects categorized as Webrtc | Edit details

Top 11 C Webrtc Projects

  • GitHub repo freeswitch

    FreeSWITCH is a Software Defined Telecom Stack enabling the digital transformation from proprietary telecom switches to a versatile software implementation that runs on any commodity hardware. From a Raspberry PI to a multi-core server, FreeSWITCH can unlock the telecommunications potential of any device.

    Project mention: UDM Pro listening on undocumented TCP port 2856 with cert valid for 100 years - what is this and how do I turn it off? | reddit.com/r/Ubiquiti | 2021-04-01

    FreeSwitch is a telecom stack similar to Asterisk. See here: freeswitch. It would be to support VoIP on the UDMP.

  • GitHub repo Kamailio

    Kamailio - The Open Source SIP Server for large VoIP and real-time communication platforms -

  • Nanos

    Run Linux Software Faster and Safer than Linux with Unikernels.

  • GitHub repo amazon-kinesis-video-streams-webrtc-sdk-c

    Amazon Kinesis Video Streams Webrtc SDK is for developers to install and customize realtime communication between devices and enable secure streaming of video, audio to Kinesis Video Streams.

    Project mention: amazon kvs C client with wowza | reddit.com/r/WebRTC | 2021-10-05

    I dont know if anyone has tried this, but Im trying to get a rPi working with https://github.com/awslabs/amazon-kinesis-video-streams-webrtc-sdk-c and wowza (a streaming engine that supports webRTC).

  • GitHub repo pear

    WebRTC Library for IoT/Embedded Device using C (by sepfy)

    Project mention: A simple C implementation to stream H.264 to browser using WebRTC | news.ycombinator.com | 2021-04-07

    I think there's some truth in what as-j is saying. Rust binaries (and C++ ones) tend to be larger than C ones. I think the major reasons are (a) Rust dependencies being statically linked due to a lack of ABI stability, (b) inclusion of portions of the (statically linked, see a) Rust standard library used by the program where C code uses libc, (c) code bloat due to monomorphization, (d) the ease of just using a full-featured library where someone writing in C might cheat a little bit. As an example of what I mean by the last point, see sdp_attribute_get_answer in this codebase. [1] It's writing JSON, but it doesn't use a JSON library that actually escapes the included string. It just assumes the included string doesn't have a quote character in it. Is that assumption valid? Will it always be valid? I'm not sure on quick inspection.

    There are ways around all of these:

    * a. Static vs dynamic linkage: in an embedded system, it'd be reasonable to just produce a single userspace binary that does everything. It can change its behavior based on argv[0]. I think this is not too unusual for constrained systems even with C binaries. Eg busybox does it. If you only have one binary, you don't need dynamic linking. Also, I think it's not strictly true that Rust doesn't support dynamic linking. I think you can dynamically link everything if you ensure the whole system is built with the same compiler version.

    * b. Standard library. You don't have to use it at all, or you can use it sparingly, paying only for what you use.

    * c. Monomorphization. You could write (for example) a Go-like map [2] rather than relying so heavily on monomorphization. I'd love to see someone take this idea as far as possible; it might be a good idea for a lot of non-inner-loop code in general, not just on tight embedded systems.

    * d. Using full-featured libraries. Obviously no one is making you do this; the same cheats available in C are available in Rust.

    but in fairness, the further you go down this path, the further you are from just being able to just take advantage of the whole Rust ecosystem.

    Personally, I'd still rather develop or use a #![no_std] Rust codebase than a C one. Memory safety is important to me. IOT devices are no exception to that. Their security is historically horrible but I'd like to change that.

    [1] https://github.com/sepfy/pear/blob/b984c8dccaafdcdd1b181786a...

    [2] https://dave.cheney.net/2018/05/29/how-the-go-runtime-implem...

  • GitHub repo OBS-studio-webrtc

    This is a fork of OBS-studio with generic support for webrtc. It leverages the same webrtc implementation most browsers use.

    Project mention: OBS->OBSNinja->OBS without virtual webcam | reddit.com/r/OBSNinja | 2021-02-22

    What you'd want is for OBS to output the WebRTC stream itself, rather than going through the webcam interface for this. This is not natively available, but there is a project that claims to do this: https://github.com/CoSMoSoftware/OBS-studio-webrtc

  • GitHub repo rawrtc

    WebRTC and ORTC with a little bit of RAWR!

    Project mention: WebRTC ➕ Build Yet another Chatting app💭 but P2P/E2EE🤯.!! | dev.to | 2021-07-01

    rawrtc(C++)

  • GitHub repo nbnet

    single header C(99) library to implement client-server network code for games

    Project mention: Nbnet: Single header C99 library implements client-server network code for games | news.ycombinator.com | 2021-10-06
  • Scout APM

    Scout APM: A developer's best friend. Try free for 14-days. Scout APM uses tracing logic that ties bottlenecks to source code so you know the exact line of code causing performance issues and can get back to building a great product faster.

  • GitHub repo libjuice

    JUICE is a UDP Interactive Connectivity Establishment library

    Project mention: A simple C implementation to stream H.264 to browser using WebRTC | news.ycombinator.com | 2021-04-07

    Nice, this looks like a simple and clear proof of concept!

    In practice, the dependency on glib, which depends in glib, can become a practical problem for embedded devices.

    That's actually why I developped libjuice [0] as the default ICE backend of libdatachannel [1].

    [0] https://github.com/paullouisageneau/libjuice

  • GitHub repo violet

    Lightweight STUN/TURN server

    Project mention: Show HN: Violet, a lightweight STUN/TURN server written in C | news.ycombinator.com | 2021-02-15
  • GitHub repo tiny-webrtc-gw

    tiny/fast webRTC video conferencing gateway

    Project mention: a question about mesh connection | reddit.com/r/WebRTC | 2021-10-04

    You're describing an "SFU" https://webrtcglossary.com/sfu/#:~:text=SFU%20stands%20for%20Selective%20Forwarding,and%20not%20a%20specific%20device. I think. I tried my hand at writing an all-in-one webserver that handled the STUN and the multiplexing (https://github.com/justinb01981/tiny-webrtc-gw)

  • GitHub repo Protozoa

    Code for the paper "Poking a Hole in the Wall: Efficient Censorship-Resistant Internet Communications by Parasitizing on WebRTC" [ACM SIGSAC CCS '20]

    Project mention: How to control which stream an SFU sends? | reddit.com/r/WebRTC | 2021-05-04

    Peer-to-peer would of course solve the problem, but there is already a solution for this: https://github.com/dmbb/Protozoa (this system uses the channel fully, completing replacing the video frame). Also, during my research I found that peer-to-peer is seldom used in video calls with more than 2 participants (or never used in the case of discord, jitsi, etc).

NOTE: The open source projects on this list are ordered by number of github stars. The number of mentions indicates repo mentiontions in the last 12 Months or since we started tracking (Dec 2020). The latest post mention was on 2021-10-06.

Index

What are some of the best open-source Webrtc projects in C? This list will help you:

Project Stars
1 freeswitch 1,492
2 Kamailio 1,489
3 amazon-kinesis-video-streams-webrtc-sdk-c 599
4 pear 503
5 OBS-studio-webrtc 405
6 rawrtc 334
7 nbnet 154
8 libjuice 111
9 violet 36
10 tiny-webrtc-gw 34
11 Protozoa 10
Find remote jobs at our new job board 99remotejobs.com. There are 34 new remote jobs listed recently.
Are you hiring? Post a new remote job listing for free.
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com