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.
Docker images used in Travis are availale on Docker Hub. See Continuous integration page for details.
Branch | Linux |
---|---|
master |
|
develop |
There is no public release yet. See Roadmap and open issues for current and future plans.
The upcoming 0.1 release will include the following features:
- Simple 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 examples on wiki. See also INSTALL for further details.
After building, tools are instaleld into bin/<host>/
directory.
Example usage:
-
Start receiver listening on all interfaces on UDP ports
10001
and10002
:$ 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.
- Linux
- Mac OS X (work in progress)
There are plans to support other platforms, notably other *nix systems, Android, and maybe some embedded systems like FreeRTOS.
- RTP: A/V Profile
- FECFRAME: Reed-Solomon Scheme (work in progress)
- FECFRAME: LDPC-Staircase Scheme (work in progress)
There are plans to support RTCP, SAP/SDP, and RTSP in upcoming releases.
Contributions are always welcome! Please read CONTRIBUTING for general hints and look at Roadmap and open issues to figure out what's going on.
-
If you'd like to report a bug, ask a question, or suggest a feature, feel free to create an issue.
-
If you'd like to submit a patch, create a pull request. For non-trivial changes, it may be reasonable to start with discussing the implementation details in an existing or a new issue.
Roc source code is licensed under MPL-2.0, see LICENSE. Roc logos by botanicahouse are licensed under CC BY-SA 4.0.
Issues with external dependencies:
- Roc may be 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.
See AUTHORS.