str0m VS ffmpeg

Compare str0m vs ffmpeg and see what are their differences.

str0m

A synchronous sans I/O WebRTC implementation in Rust. (by algesten)

ffmpeg

FFmpeg Zig package (by andrewrk)
InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
str0m ffmpeg
10 4
245 120
- -
9.7 9.9
5 days ago 23 days ago
Rust C
MIT License GNU General Public License v3.0 or later
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

str0m

Posts with mentions or reviews of str0m. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-04-19.
  • VoRS: Vo(IP) Simple Alternative to Mumble
    15 projects | news.ycombinator.com | 19 Apr 2024
  • Interview with Mo Rajabi, co-founder and CEO of Noor
    3 projects | dev.to | 18 Apr 2024
    In the video, Mo talked about a few packages like Cidre and StrOm, and we referred to SpaceDrive.
  • Is Something Bugging You?
    10 projects | news.ycombinator.com | 13 Feb 2024
    - Dropbox [3] uses a similar approach but they talk about it a bit more abstractly.

    Sans-IO is more documented in Python [4], but str0m [5] and quinn-proto [6] are the best examples in Rust I’m aware of. Note that sans-IO is orthogonal to deterministic test frameworks, but it composes well with them.

    With the disclaimer that my opinions are mine and mine alone, and don’t reflect the company I work at —— I do work at a rust shop that has utilized these techniques on some projects.

    TigerBeetle is an amazing example and I’ve looked at it before! They are really the best example of this approach outside of FoundationDB I think.

    [0]: https://risingwave.com/blog/deterministic-simulation-a-new-e...

    [1]: https://risingwave.com/blog/applying-deterministic-simulatio...

    [2]: https://dropbox.tech/infrastructure/-testing-our-new-sync-en...

    [3]: https://github.com/spacejam/sled

    [4]: https://fractalideas.com/blog/sans-io-when-rubber-meets-road...

    [5]: https://github.com/algesten/str0m

    [6]: https://docs.rs/quinn-proto/0.10.6/quinn_proto/struct.Connec...

  • Pure C WebRTC
    12 projects | news.ycombinator.com | 7 Jan 2024
    I am really excited about https://github.com/sepfy/libpeer. It has examples ready for ESP32 etc....

    When working on KVS I wasn't familiar with the embedded space at all. I saw 'heavyweight' embedded where you were running on Linux. Then you had RTOS/No OS at all. I wasn't prepared for these devices at all. If we can make WebRTC work in the embedded space I think it will really accelerate what developers are able to build!

    Remotely driven cars, security cameras, robots in hospitals that bring iPads to infectious patients etc... Creative people are building amazing things. The WebRTC/video space needs to work harder and support them :)

    -----

    I love how diverse the WebRTC space is now. Outside of this implementation you have plenty of other options!

    * https://github.com/shinyoshiaki/werift-webrtc (Typescript)

    * https://github.com/pion/webrtc (Golang)

    * https://github.com/webrtc-rs/webrtc (Rust)

    * https://github.com/algesten/str0m (Rust)

    * hhttps://github.com/sepfy/libpeer (C/Embedded)

    * https://webrtc.googlesource.com/src/ (C++)

    * https://github.com/sipsorcery-org/sipsorcery (C#)

    * https://github.com/paullouisageneau/libdatachannel (C++)

    * https://github.com/elixir-webrtc (Elixir)

    * https://github.com/aiortc/aiortc (Python)

    * GStreamer’s webrtcbin (C)

    See https://github.com/sipsorcery/webrtc-echoes for examples of some running against each other.

  • WebRTC for the Curious
    18 projects | news.ycombinator.com | 4 Jan 2024
  • Show HN: Bring phone calls into the browser (sip-to-WebRTC)
    9 projects | news.ycombinator.com | 4 Jan 2024
  • WebRTC support being added to FFmpeg
    6 projects | news.ycombinator.com | 30 May 2023
  • str0m 0.1.0 – Sans-IO WebRTC library
    1 project | /r/rust | 17 Mar 2023
    Find it here: crates.io/crates/str0m Code here: github.com/algesten/str0m Docs here: docs.rs/str0m/0.1.0/str0m/
  • str0m a sans I/O WebRTC library
    3 projects | /r/rust | 18 Dec 2022
    Git: https://github.com/algesten/str0m

ffmpeg

Posts with mentions or reviews of ffmpeg. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-01-01.
  • Odin Programming Language
    23 projects | news.ycombinator.com | 1 Jan 2024
    And furthermore, C and C++ code can participate in the Zig package ecosystem. For example, here is ffmpeg packaged for consumption by a Zig project:

    https://github.com/andrewrk/ffmpeg

    Why not use a system package? Well, because the user's system might not have such a package. They might be on Windows, for example. Or their package might be out of date. [Or the system might have chosen sides in a nasty fork war](http://blog.pkh.me/p/13-the-ffmpeg-libav-situation.html).

    So, while system packages are nice for end users, they might not always satisfy the needs of upstream application developers.

  • Extend a C/C++ Project with Zig (2021)
    3 projects | news.ycombinator.com | 22 Aug 2023
    It's a bit more nuanced than that, as detailed by AndyKelley (andrewrk@) on github[1].

    As I understand it, C/C++ interop and support in the build system is not going away; instead it might be accomplished via a separately maintained clang package. (Aside: for an example of this kind of thing can work, see ffmpeg[2] converted to use the Zig build system which pulls in nasm[3] as a Zig package; presumably the clang solution would be a bit more integrated than that, but it serves to show that it can be done).

    Zig will still support compilation using LLVM, but instead of directly linking to LLVM and using LLVM's IRBuilder API, it will directly output LLVM bitcode instead[4]. The build system will then handle linking this into an executable.

    The idea seems to be to reduce dependencies of the main executable, while keeping the build system flexible enough that it does not impact existing use cases.

    I'm not affiliated with the Zig project in anyway, so my understanding of this may be off. I'd recommend reading the GH issues and comments I've linked below to get a better idea of it.

    [1]: https://github.com/ziglang/zig/issues/16270#issuecomment-161...

    [2]: https://github.com/andrewrk/ffmpeg

    [3]: https://github.com/andrewrk/nasm

    [4]: https://github.com/ziglang/zig/issues/13265

  • WebRTC support being added to FFmpeg
    6 projects | news.ycombinator.com | 30 May 2023
    I am not entirely sure with were you are going with this comment but FYI here is an ffmpeg fork with the build system replaced with a "build.zig" file and the Zig build environment: https://github.com/andrewrk/ffmpeg
  • Zig Build System
    8 projects | news.ycombinator.com | 14 Apr 2023
    If you want to see a fun example of this build system in action, have a look at my ffmpeg fork which has the build system ported to zig build:

    https://github.com/andrewrk/ffmpeg

    Particularly interesting is the use of nasm as a package dependency, which is executed to compile many assembly files into object files, then linked into the ffmpeg static library.

    I'm using this package in a work-in-progress reboot of Groove Basin (a music player server) in Zig:

    https://github.com/andrewrk/groovebasin/tree/zig-pkg

    Point being that if you want to collaborate on the music player project, you don't need to screw around with a million system dependencies, it's just `zig build` and you're off to the races - no matter whether you are using Windows, macOS, or Linux.

    The zig build system is under heavy construction during this release cycle of Zig. I recommend to check it out at the end of May when Zig 0.11.0 is released, and a few more issues will be smoothed over. Of course, if you want to get your hands dirty and help work on a bleeding-edge build system & package manager, come on over and give master branch a try.

What are some alternatives?

When comparing str0m and ffmpeg you can also consider the following projects:

broadcast-box - A broadcast, in a box.

sokol-zig - Zig bindings for the sokol headers (https://github.com/floooh/sokol)

go2rtc - Ultimate camera streaming application with support RTSP, RTMP, HTTP-FLV, WebRTC, MSE, HLS, MP4, MJPEG, HomeKit, FFmpeg, etc.

raylib-zig - Manually tweaked, auto-generated raylib bindings for zig. https://github.com/raysan5/raylib

webrtc-echoes - Simple useful interoperability tests for WebRTC libraries. If you are a WebRTC library developer we'd love to include you!

webrtc - A pure Rust implementation of WebRTC

ffmpeg-webrtc - Support WebRTC(WHIP) for FFmpeg.

libpeer - WebRTC Library for IoT/Embedded Device using C