Opus is a totally open, royalty-free, highly versatile audio codec. Opus is unmatched for interactive
speech and music transmission over the Internet, but is also intended for storage and streaming
applications. It is standardized by the Internet Engineering Task Force (IETF) as RFC 6716
which incorporated technology from Skype’s SILK codec and Xiph.Org’s CELT codec.
Technology
Opus can handle a wide range of audio applications, including Voice over IP, videoconferencing,
in-game chat, and even remote live music performances. It can scale from low bitrate narrowband
speech to very high quality stereo music. Supported features are:
Bitrates from 6 kb/s to 510 kb/s
Sampling rates from 8 kHz (narrowband) to 48 kHz (fullband)
Frame sizes from 2.5 ms to 60 ms
Support for both constant bitrate (CBR) and variable bitrate (VBR)
Audio bandwidth from narrowband to fullband
Support for speech and music
Support for mono and stereo
Support for up to 255 channels (multistream frames)
Dynamically adjustable bitrate, audio bandwidth, and frame size
Good loss robustness and packet loss concealment (PLC)
Floating point and fixed-point implementation
You can read the full specification, including the reference implementation, in RFC 6716.
An up-to-date implementation of the Opus standard is also available from the downloads page.
This Opus 1.3-beta beta release
of the upcoming Opus 1.3 includes:
Enabling by default the spec fixes in RFC 8251
Improvements to the VAD and speech/music classification using an RNN
Improvements to stereo speech coding at low bitrate
Added support for ambisonics projection using mapping 3 (disabled by default)
Fixes to the CELT PLC
Additionally, as a way to test the upcoming update to opus-tools, we’re providing Windows binaries
built with 1.3-beta. These binaries are based on libopusenc, which means opusenc is finally able
to make use of the Opus delayed-decision feature to make better speech/music transitions.
The opusfile library provides seeking, decode, and playback
of Opus streams in the Ogg container (.opus files) including
over http(s) on posix and windows systems.
opusfile depends on libopus and libogg.
The included opusurl library for http(s) access depends on
opusfile and openssl.
Changes since the v0.8 release:
Fix an invalid free with tag handling.
Improve handling of corrupt streams.
Improve performance on streams with many chain segments.
Improve TLS host validation.
Align op_raw_total to work better with op_raw_seek.
Documentation and build improvements.
This release is backward-compatible with the previous
release. We recommend all users upgrade.
The library is functional, but there are likely issues
we didn’t find in our own testing. Please give feedback
in #opus on irc.freenode.net or at opus@xiph.org.
Programming documentation is available in tree and
online.