当前所有的 FLAC 流实现(例如 Edcast 和 Icecast)似乎都在流时使用 Ogg 作为 FLAC 的容器。
- 这是什么原因?
- 不使用 Ogg 而是流式传输“本机”FLAC 流有什么缺点?
我已经做了一些通过 HTTP 流式传输 FLAC 的测试,它似乎在 VLC 中工作得很好。FLAC 似乎以这样一种方式构建,即帧可以独立站立,使其能够抵抗流损坏和/或丢帧。鉴于此,我不太明白为什么在 Ogg 中包装 FLAC 是必要的。
当前所有的 FLAC 流实现(例如 Edcast 和 Icecast)似乎都在流时使用 Ogg 作为 FLAC 的容器。
我已经做了一些通过 HTTP 流式传输 FLAC 的测试,它似乎在 VLC 中工作得很好。FLAC 似乎以这样一种方式构建,即帧可以独立站立,使其能够抵抗流损坏和/或丢帧。鉴于此,我不太明白为什么在 Ogg 中包装 FLAC 是必要的。
FLAC-to-Ogg 映射页面对为什么在许多情况下需要使用 Ogg 封装而不是流式传输原生 FLAC 有相当详尽的解释:
原始的 FLAC 格式包括一个非常薄的传输系统……称为“本机 FLAC”。...它非常轻量级,不支持更复杂的传输机制,例如多个逻辑流,...
原生 FLAC 传输不是标准编解码器设计方式中的传输“层”,因为它不能与有效负载完全分离。...
这在尝试将 FLAC 封装在其他真正的传输层中时会出现问题......
另一种方法是将本地 FLAC 帧视为 Ogg 数据包并接受传输冗余。事实证明,这算不上什么惩罚;... 冗余仅占百分之几。
[重点补充]
有关更多信息,请参阅完整页面,但结果是,虽然可用于流式传输,但原生 FLAC 并不适合更复杂的设置,而且 Ogg 封装的成本非常低。如果原生 FLAC 可以很好地满足您的特定需求,您可以继续使用它,但 Ogg 最终会给您更多的灵活性。