Mini Sample/media 容器格式 · v1.0 / v2.0 / v3.0
| 属性 | 值 |
|---|---|
| 扩展名 | .msm |
| MIME 类型 | audio/msm(非官方) |
| 魔数字节 | MSM1 / MSM2 / MSM3 |
三个版本共享相同的 30 字节文件头布局,小端序。仅 magic、version、sample_rate、pcm_samples 四个字段不同。18432 是 MSM 容器的帧大小(每声道 PCM 样本数),由格式本身定义。
| 偏移 | 大小 | 字段 | 类型 | 说明 | v1.0 | v2.0 | v3.0 |
|---|---|---|---|---|---|---|---|
| 0 | 4 | magic | char[4] | 文件标识 | "MSM1" | "MSM2" | "MSM3" |
| 4 | 2 | version | uint16_t | 格式版本 | 0x0100 | 0x0200 | 0x0300 |
| 6 | 2 | flags | uint16_t | 固定 0x5A53(ASCII "SZ") | 相同 | 相同 | 相同 |
| 8 | 2 | channels | uint16_t | 声道数(1 或 2) | 相同 | 相同 | 相同 |
| 10 | 4 | sample_rate | uint32_t | 采样率 | 跟随输入 | 固定 48000 | 固定 48000 |
| 14 | 4 | frame_count | uint32_t | 总帧数 | 相同 | 相同 | 相同 |
| 18 | 4 | pcm_samples | uint32_t | 每声道总样本数 | 有效样本 | frame_count × 18432(含填充) | frame_count × 18432(含填充) |
| 22 | 4 | data_offset | uint32_t | 帧数据偏移 | = 30 | = 30 | = 30 |
| 26 | 4 | reserved | uint16_t[2] | 保留,必须为 0 | 相同 | 相同 | 相同 |
| 版本 | 编码 | 依赖 | 体积 |
|---|---|---|---|
| v1.0 | ADPCM | 零外部依赖 | ~200–500 KB |
| v2.0 | Opus | libopus | ~1.5–2.5 MB |
| v3.0 | Opus(原生采样率直通) | libopus | ~1.5–2.5 MB |
三个版本格式不兼容(魔数分别为 "MSM1" / "MSM2" / "MSM3")。解码器必须按魔数分发,不能混用。
MSM 以 MIT 许可开源。你可以自由使用、修改、闭源商用,唯一要求是保留版权声明。