3 个不稳定版本
0.1.3 | 2023 年 10 月 4 日 |
---|---|
0.1.2 | 2023 年 10 月 4 日 |
0.0.1 | 2023 年 10 月 4 日 |
#26 在 #ogg
23KB
342 行
Ogg Opus
Rust 中的 Ogg Opus 编码器,适用于 WASM。
WASM 问题 ...
我们目前正在调查此问题。
Uncaught TypeError: Failed to resolve module specifier "env". Relative references must start with either "/", "./", or "../".
Ogg Opus 原始仓库
用法
cargo add ogg-opus-wasm
wasm-pack build --target web
示例
编码
此示例使用 wav
crate,您可以将它添加到您的 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 所支持的任何采样率(8k Hz、12k Hz、24k Hz 和 64k Hz),但仅测试了 16k Hz
- 编码的比特率设置为 24k(因为 Lily 的限制)
- 音频的开始和结束附近仍存在一些不准确(无法确定是由于编码器还是解码器)
- 高级解码和编码功能(可修复流、fec 等)
依赖项
~4MB
~78K SLoC