轻量级 Android 音频编解码库,基于 Silk SDK / dr_libs / stb_vorbis / lame / android_media 实现底层解码,JNI 封装,最高支持 48000Hz 采样率。
| 特性 | 说明 |
|---|---|
| 体积极小 | 完整库仅 ~500KB |
| 高速转换 | 原生 C/C++ 实现 |
| 格式丰富 | mp3 / wav / flac / ogg / silk 等 |
| 自动识别 | 输入输出格式智能检测 |
| 高采样率 | 最高 48000Hz |
| 输入 | 输出 |
|---|---|
| mp3 / wav / flac / ogg / silk / amr / pcm | silk / mp3 / pcm |
采样率: 8000 / 12000 / 16000 / 24000 / 32000 / 44100 / 48000 Hz
SilkCodec codec = new SilkCodec();
// 任意格式 → Silk
codec.autoToSilk("/sdcard/input.mp3", "/sdcard/output.silk", 24000);
// Silk → MP3
codec.silkToMp3("/sdcard/input.silk", "/sdcard/output.mp3", 24000);
// 任意格式 → PCM
codec.autoToPcm("/sdcard/input.wav", "/sdcard/output.pcm");
// 获取文件类型
int type = codec.getFileType("/sdcard/somefile");
// 返回:0=未知 1=Silk 2=MP3 3=WAV 4=FLAC 5=OGG 6=PCM 7=M4A 8=MP4
// 获取音频时长(毫秒)
long duration = codec.getDuration("/sdcard/somefile");| 返回值 | 含义 |
|---|---|
| 0 | 成功 |
| -1 | 无法获取文件扩展名 |
| -2 | 不支持的音频格式 |
| -3 | PCM 转 Silk 需要额外参数 |
| -4 | 输入已经是 PCM 格式 |
| -5 | 输入已经是 Silk 格式 |
| -10 | 输出必须是 .silk 或 .slk |
| -11 | 输出必须是 .mp3 |
| -12 | 输出必须是 .pcm 或 .raw |
| -13 | 文件格式与方法不匹配 |
| -201 | Silk 转 MP3 文件错误 |
| -202 | Silk 转 MP3 文件错误 |
| -301 | MP3 解码错误 |
| -302 | MP3 文件错误 |
| -401 | OGG 解码错误 |
| -402 | OGG 文件错误 |
| -501 | WAV 解码错误 |
| -502 | WAV 文件错误 |
| -601 | FLAC 解码错误 |
| -602 | FLAC 文件错误 |
| -701 | PCM 参数错误 |
| -702 | PCM 文件错误 |
| -703 | PCM 参数错误 |
| -801 | AAC/M4A 解码错误 (文件不存在) |
| -802 | AAC/M4A 解码错误 (未找到音频轨道) |
| -803 | AAC/M4A 解码错误 (格式不支持) |
| -901 | AAC 编码错误 (PCM 文件不存在) |
| -902 | AAC 编码错误 (编码异常) |
| -911 | M4A 编码错误 (PCM 文件不存在) |
| -912 | M4A 编码错误 (Muxer 失败) |
| -1001 ~ -1009 | Silk 转 AAC/M4A 错误 |
| -1011 ~ -1012 | MP3 转 AAC/M4A 错误 |
| -1021 ~ -1022 | WAV 转 AAC/M4A 错误 |
| -1031 ~ -1039 | M4A/AAC 转 Silk 错误 |
| -1051 ~ -1059 | M4A/AAC 转 AAC 错误 |
| -1061 ~ -1069 | M4A/AAC 转 M4A 错误 |
| -2000 | M4A/AAC 转 Silk 错误 (解码失败) |
settings.gradle.kts:
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
maven { url = uri("https://jitpack.io") }
}
}build.gradle.kts (Module):
dependencies {
implementation("com.github.YunJavaPro:Silk-Codec-Android:$version")
}- Android SDK 26+
- arm64-v8a
Apache License 2.0