Code Monkey home page Code Monkey logo

rocd's Introduction

PROJECT IS WORK IN PROGRESS!

rocd: audio streaming daemon

Build Matrix chat

About project

rocd is a real-time audio streaming daemon with REST API.

With it, you can:

  • inspect and control audio devices
  • initiate audio streaming between local devices and remote peers
  • create virtual devices that automatically stream all sound to/from remote peers

The key idea is to isolate application code from complexities of network streaming and audio I/O.

Applications can be written in any language (e.g. node.js or python) and don't have any special requirements. Real-time path, sensitive to latency and performance, is fully enclosed inside rocd.

Features

Internally, rocd is based on Roc Toolkit, which gives you:

  • streaming high-quality audio with guaranteed latency
  • robust work on unreliable networks like Wi-Fi, due to use of Forward Erasure Correction codes
  • multiple profiles for different CPU and latency requirements
  • portability and low requirements to hardware

With rocd, these benefits are combined with a high-level, language-independent, and easy to use HTTP API. Basically you just say "stream from here to there" and it works.

Use cases

TBD

Technology

rocd is built on top of several big lower-level technologies:

  • For streaming:

    • roc-toolkit - real-time streaming library that combines high quality, guaranteed latency, and loss repair
    • roc-go - golang bindings to Roc Toolkit
  • For virtual devices:

    • roc-sink and roc-source PipeWire modules - virtual devices for Linux with PipeWire
    • roc-pulse - virtual devices for Linux with PulseAudio
    • roc-vad - virtual devices for macOS CoreAudio

Compatibility

Since rocd is based on Roc Toolkit, it is automatically interoperable with all other software based on it.

Remote peer can be:

Third-party RTP peers are also supported, given that they implement all necessary extensions.

Platforms

Currently supported platforms:

  • Linux / PipeWire
  • Linux / PulseAudio
  • Linux / ALSA
  • macOS / CoreAudio
  • Windows / WASAPI

Releases

TBD

Installation

TBD

Usage

There are two ways to use rocd:

  • via REST API
  • via web interface

In addition, rocd can be configured via command-line flags and configuration file.

For further details, see USAGE.md.

Hacking

Contributions in any form are always welcome! You can find issues needing help using help wanted and good first issue labels.

If you would like to dig into the project internals, have a look at HACKING.md.

Authors

See here.

License

Contents of the repository is licensed under MPL-2.0.

For details on Roc Toolkit licensing, see here.

rocd's People

Contributors

adrianopol avatar gavv avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.