ajs124 / roc

Real-time audio streaming over network.

Home Page:https://roc-project.github.io/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Roc: real-time audio streaming over network

Roc is a library and tools for real-time streaming of high-quality audio over unreliable network.

Goals:

  • guaranteed latency;
  • good quality of service on unreliable networks, such as 802.11 (Wi-Fi);
  • portability;
  • relying on open, standard protocols.

Status

Branch Linux
master
develop

Work in progress!

There is no public release yet. The upcoming 0.1 release will include the following features:

  • Public API for sender and receiver
  • Command line tools for sender and receiver
  • Network I/O
  • Sound I/O (in tools)
  • Audio processing pipeline with dynamic resampling
  • RTP support with uncompressed 16-bit linear PCM
  • FECFRAME support with Reed-Solomon and LDPC-Staircase FEC codes using OpenFEC
  • Documentation
  • Linux support, including Raspberry Pi
  • Mac OS X support
  • Proof of concept Roc-based network transport for PulseAudio

See also Roadmap page.

Documentation

Building

See Building page. In particular, User instructions page provides examples for popular distros.

Try it

After building, tools are instaleld into bin/<host>/ directory.

Example usage:

  • Start receiver listening on all interfaces on UDP ports 10001 and 10002:

    $ roc-recv -vv -s :10001 -r :10002
    
  • Send WAV file to the receiver:

    $ roc-send -vv -s <receiver_ip>:10001 -r <receiver_ip>:10002 -i file.wav
    

See --help option for usage details.

Supported platforms

  • Linux
  • Mac OS X

There are plans to support other platforms, notably other *nix systems, Android, and maybe some embedded systems like FreeRTOS.

Supported protocols

There are plans to support RTCP, SAP/SDP, and RTSP in upcoming releases.

Contributing

Contributions are always welcome!

Feel free to open issues for bug reports, feature requests, and questions.

Pull requests are welcome as well. For large features, it may be reasonable to open an issue and discuss the implementation first. Development page provides some details about our plans, conventions, workflow, and tools.

Licensing

Roc source code is licensed under MPL-2.0. Roc PulseAudio modules are licensed under LGPL-2.1.

Roc by default is configured to use FEC codec from OpenFEC, which is licensed under CeCILL, a GPL-like and GPL-compatible license. When Roc is built with OpenFEC support enabled, it must be distributed under a lincense compatible with CeCILL.

Authors

Maintainers and contributors are listed in AUTHORS.

About

Real-time audio streaming over network.

https://roc-project.github.io/

License:Mozilla Public License 2.0


Languages

Language:C++ 82.0%Language:Python 9.2%Language:C 8.2%Language:Shell 0.6%