3个版本
0.1.2 | 2021年5月18日 |
---|---|
0.1.1 | 2021年5月18日 |
0.1.0 | 2021年5月18日 |
#671 in 音频
每月 38次下载
22KB
398 代码行
Ogg Opus
Rust中的Ogg Opus解码/编码器
用法
添加到您的 cargo.toml
ogg-opus = "^0.1"
最低Rust版本
由于我们使用了 const generics
,最低的Rust版本是 Rust 1.51
示例
编码
此示例使用了 wav
包,您可以通过将其添加到您的 cargo.toml
文件中来实现
wav = "^1.0"
let mut f = File::open("my_file.wav").unwrap();
let (_, b) = wav::read(&mut f).unwrap();
let audio = b.try_into_sixteen().unwrap();
let opus = ogg_opus::encode::<16000, 1>(&audio).unwrap();
解码
从文件读取
let mut f = File::open("my_file.ogg").unwrap();
let (raw, header) = ogg_opus::decode::<_,16000>(f).unwrap();
从Vec读取
use std::io::Cursor;
// Let's say this vec contains Ogg Opus data
let opus: Vec<u8> = Vec::new();
let (raw, header) = ogg_opus::decode::<_,16000>(Cursor::new(opus)).unwrap();
什么工作,什么不工作
- 仅支持原始部分的
i16
(16位整数)。 - 支持单声道和立体声,但仅测试了单声道。
- 测试未覆盖超过立体声的更多通道,可能会损坏。
- 支持解码和编码Opus支持的所有采样率(8kHz、12kHz、24kHz和64kHz),但仅测试了16kHz
- 编码的比特率设置为24k(因为Lily的限制)
- 音频的开始和结束位置仍然存在一些不准确(无法确定是由于编码器还是解码器造成的)
- 高级解码和编码功能(可修复流、fec等)
依赖项
~4MB
~73K SLoC