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.
Branch | Linux |
---|---|
master |
|
develop |
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.
See Building page. In particular, User instructions page provides examples for popular distros.
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
There are plans to support other platforms, notably other *nix systems, Android, and maybe some embedded systems like FreeRTOS.
There are plans to support RTCP, SAP/SDP, and RTSP in upcoming releases.
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.
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.
Maintainers and contributors are listed in AUTHORS.