C Webrtc

Open-source C projects categorized as Webrtc | Edit details
Related topics: #C #SIP #IoT #Linux #Raspberry Pi

Top 11 C Webrtc Projects

  • 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.

  • Kamailio

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

  • Scout APM

    Less time debugging, more time building. Scout APM allows you to find and fix performance issues with no hassle. Now with error monitoring and external services monitoring, Scout is a developer's best friend when it comes to application development.

  • 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).

  • 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...

  • 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

  • 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


  • 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
  • SonarLint

    Deliver Cleaner and Safer Code - Right in Your IDE of Choice!. SonarLint is a free and open source IDE extension that identifies and catches bugs and vulnerabilities as you code, directly in the IDE. Install from your favorite IDE marketplace today.

  • 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

  • violet

    Lightweight STUN/TURN server

    Project mention: Show HN: Violet, a lightweight STUN/TURN server written in C | news.ycombinator.com | 2021-02-15
  • 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)

  • 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.

C Webrtc related posts


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

Project Stars
1 freeswitch 1,663
2 Kamailio 1,565
3 amazon-kinesis-video-streams-webrtc-sdk-c 640
4 pear 527
5 OBS-studio-webrtc 434
6 rawrtc 343
7 nbnet 194
8 libjuice 135
9 violet 56
10 tiny-webrtc-gw 36
11 Protozoa 12
Find remote jobs at our new job board 99remotejobs.com. There are 30 new remote jobs listed recently.
Are you hiring? Post a new remote job listing for free.
OPS - Build and Run Open Source Unikernels
Quickly and easily build and deploy open source unikernels in tens of seconds. Deploy in any language to any cloud.