Skip to content

RustMusic v0.4.2

Choose a tag to compare

@LingyunStudio LingyunStudio released this 30 Sep 19:37
· 40 commits to main since this release

RustMusic v0.4.2

修复:本地 m4a / mp4 文件无法播放(重要)

此前曲库中非分片 m4a 与 mp4 文件点击播放一律静默失败(普通转换工具产出的 m4a、下载合并的 mp4 视频均受影响),只有 B 站缓存类分片文件能正常播放。根因是音频引擎 rodio 0.20.1 的 MP4 支持缺陷:其封装层一边报告"文件可随机访问"一边不提供文件总长度,MP4 解析器初始化第一步即失败,进程内直接崩溃——且该缺陷对整个 MP4 容器家族无差别生效,与分片与否无关。

  • 音频引擎 rodio 升级 0.20 → 0.22.2,完整适配其新 API(输出设备 OutputStream/Sink → MixerDeviceSink/Player、Source trait 重构、解码器原生 f32 输出)
  • MP4 容器家族(m4a / mp4 / m4b / B 站 DASH 缓存)统一改走项目自带的 symphonia 直连解码源:自动跳过视频轨与封面图轨、选中正确的音轨,总时长与 seek 全部准确;同时规避了 rodio 0.22.2 对多轨 MP4 的时长混算问题(视频轨帧数 × 音轨时基,会把 24.8 秒的视频报成 9 秒并钳制拖动进度)
  • 解码层现在收到真实的文件长度与可寻址标记,非 MP4 格式的 seek 定位同样受益

新增:ALAC(Apple Lossless)解码

  • 从 FLAC / iTunes 转出的 ALAC 无损 m4a 此前提示无法播放(解码器未编译进程序),现已支持,播放体验与其他 m4a 一致

其他

  • 修复示例 mp4(B 站视频合并产物)播放时长显示 9 秒、进度条异常的问题
  • 播放链路无其他行为变更;mp3 / flac / wav / 在线音源播放路径不变