Roc: real-time audio streaming over network
Roc is a library and tools for real-time streaming of high-quality audio over unreliable network.
- guaranteed latency;
- good quality of service on unreliable networks, such as 802.11 (Wi-Fi);
- relying on open, standard protocols.
Work in progress!
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
- Linux support, including Raspberry Pi
- Mac OS X support
- Proof of concept Roc-based network transport for PulseAudio
After building, tools are instaleld into
Start receiver listening on all interfaces on UDP ports
$ 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
--help option for usage details.
- 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.
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.
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.